Posts Tagged with: nWire

Five tips for speeding up Eclipse PDT and nWire

Eclipse Helios (3.6) includes an improved version of Eclipse PDT, labeled 2.2. It is also included in the current Zend Studio (7.1 and above). Among other enhancements, it dramatically improved the performance of code lookup-related tasks like searching references, creating a type hierarchy and even code completion. This is due to a new design, inspired by nWire, which uses the h2 database engine as a persistent storage for this data. 

The h2 database is a high-performance, low profile, Java native database engine, created as a successor to the widely used HSQLDB. It is open source and free to use. nWire uses h2 since its' early days. We gathered a lot of experience on how to optimize h2 and improve its' performance. There's a lot that can be done from the software developer side, however, even as an end user, there's still some simple techniques you can follow to improve the performance on your machine.

The database files

The h2 engine, as it is used in PDT and nWire, is running from within the Eclipse main process (in embedded mode and not as a server) and keeps the information in local storage, i.e. disk files. As a simple analogy, it is a bit like Microsoft Jet database engine used in MS Access. The database files are kept inside the workspace folder. The location of the workspace folder appears in the title of the main Eclipse window.

Under the workspace, there's a special folder called .metadata (beginning with a dot). It may be hidden on your machine. This folder contains settings and temporary files for the workspace. The database files are located in:

  • For PDT: <workspace folder>/.metadata/.plugins/org.eclipse.dltk.core.index.sql.h2/
  • For nWire: <workspace folder>/.metadata/.plugins/com.nwiresoftware.nwire.core/ndb/

The database files end with .db suffix. When you work with PDT or nWire, the IO activity around these files is intensive. Keeping the IO smooth is the key to improving your performance. These files can get pretty big. For example, I have a workspace containing the Magento code base with over 5600 PHP files and almost 450K line of code. The PDT repository occupies about 84 MB and the nWire repository is about 1 GB.

1. Disable virus scanners

The first thing you should do is disable virus scanning on database files. This has a major performance impact. The database engine will never execute code stored within the database, so there's no danger of malicious code being executed. Most virus scanners allow disabling the scan of a given folder (see the folders above) or a given suffix (the .db suffix).  

2. Use a fast storage device

Some people use a USB flash drive to store their workspace. Some store their workspace on a network drive. The impact on your performance in these cases will be substantial. If you want to achieve optimal performance, store your workspace on a fast storage device with a fast interface. Use your internal HDD (or SSD) for that purpose. Make sure the drive is properly maintained and has some free space available for the database to grow. If the file system requires it (FAT and NTFS), make sure to defragment your disk periodically.

3. Keep your JVM up to date

Keeping an updated JVM can improve the performance of h2. Especially if your are using an "ancient" version. 

4. Delete the database if your experience problems

In some cases, the database may get corrupted. This can happen, for example, in case of a power failure or a crash. When h2 loads the database, it will try to fix the corrupted data, which may take some time, depending on the database size. In case of PDT and nWire, the data is not really worth saving: it can be recreated by analyzing your source code. This means, you can safely delete the database files. Use this technique if Eclipse hangs when starting up or loading nWire. Make sure you close Eclipse first. The database will be recreated when you restart Eclipse.

5. Do not backup the database

If you are using an automated backup solution (e.g. TimeMachine, or a remote backup software), make sure to exclude the database folders from the backup.  These files are big and they will change frequently, which means it is a lot of data to back up. As I mentioned above, it is really unnecessary, since the data can be recreated. Needless to say, running the backup while working in Eclipse will seriously affect the IO performance.

Conclusion

Use the above tips to keep PDT and nWire running smoothly. If you have more tips or questions, let us know in the comments. For more information on h2 performance see this page

Getting Ready for Helios

Helios

June is a festive month for the Eclipse community: the release of a new version. This year, the new version is called Eclipse Helios or Eclipse 3.6. nWire 1.3 does not officially support this new release, but we are already using it successfully in our labs. It should work just fine, so we invite you to try and report any issues you encounter. Official nWire supports Eclipse 3.6 will be released in the upcoming weeks.

For those not familiar with the Eclipse release cycles, here's a brief introduction. The Eclipse that you download from Eclipse.org is actually a collection of many projects. These include the platform itself, JDT (Java Development Tools), PDT (PHP Development Tools), WebTools and many others. Each year, there's a single release for all these projects. It is called a "release train" because it leaves exactly on time. Everybody has to be ready and board the train, otherwise they miss it.

The Helios "Release Candidate" (RC) build can be downloaded today. The final release will be available on June 23rd. If you want to be among the first to download the new release, you might want to join the "Friends of Eclipse" program.

So what's new in this release? Well, official release notes will be available with the release itself. We also recommend reading the articles which are released as part of the traditional Eclipse Blogathon. The changes may not be that obvious, for a number of reasons:

  • Most of the core Eclipse project are mature and fully featured, so the changes are minor.
  • Many changes and additions are behind the scenes, providing richer API for developers who use Eclipse as a base platform.
  • There are new and exciting projects which are now the focus of attention, mainly e4, the next iteration of Eclipse which takes the platform into the browser.

Nevertheless, there's a lot to look forward to. Like in previous releases, I will be posting my "Eclipse Hidden Treasures" article on my personal blog (last year, it won the Blogathon). PHP developers are in for a real treat, as the new PDT 2.2 (part of the Helios release) offers much improved performance and many improvements. nWire for PHP uses PDT, and the performance boost is noticeable. Give it a try, you won't be disappointed.

nWire 1.3.0 is Released!

We are very happy to announce that nWire 1.3 is released. This new release is a free upgrade to all our existing customers. To upgrade an existing nWire installation, use the Eclipse Check for Updates feature or simply reinstall nWire from our update site at http://update.nwiresoftware.com. For more details on installing nWire see our download page. We moved our update sites to Amazon CloudFront infrastructure, so the installation should be very quick.

This release is focused on performance and polishing the user experience. We believe the new nWire is more mature and delivers higher quality. Read the full release notes.

Free Trials for Everyone!

If you tried nWire before and wish to try it again, you are welcome to do so. Simply install nWire and start a new, free 30 day trial today. Even if your trial expired in previous versions.

Important: Updated Pricing

This new nWire release is the result of a significant development effort. In light of these efforts, the prices of nWire will be updated. From the beginning of June, the base price for nWire (PHP or Java) will be $79 and the price for both products will be $129. You can still take advantage of our current prices before the end of the month: get nWire for PHP or Java for $59 and both for $99. For more pricing information and volume pricing, please visit our online shop.

nWire 1.3.0 Nearing Production

nWire 1.3.0 Beta is moving according to plan. Today, we are releasing the last update of the beta. The final product will be released shortly after. This release is focused on ironing out the final issues and it is feature complete. As always, please send your feedback and bug reports to support@nwiresoftware.com, or visit our forum.

What is new in the third beta of nWire 1.3.0?

  • nWire will now use the Eclipse defined content types in order to determine which files will be analyzed. This is especially important in PHP projects using different file extension which is non standard. To add more types, use the preferences, under General -> Content Types. This works for PHP files and Java files.
  • Removing the data from the repository when closing a project is now optional. The default is to keep the data, as it was in nWire 1.1 and unlike nWire 1.2. This can be changed in the preferences, under nWire -> Analysis.
  • The stability of the navigator focusing was improved.
  • More performance enhancements.

Please use the following update site URL to install the new beta: http://update-beta.nwiresoftware.com. Follow the installation instructions for the release version (using the update manager), replacing the release URL with the one above. If you are already using the beta, you can use the Eclipse built in update mechanism to update nWire, selecting Help -> Check for Updates.

nWire 1.3.0 Beta Updated

We launched the nWire 1.3.0 Beta about a month ago (read our previous post) and got some good feedback. Today we are releasing the second beta, which is faster and more stable. It also further improves the usability, more details hereunder. This release is stable enough, so we recommend you try it out and let us know what your think. Please send your feedback and bug reports to support@nwiresoftware.com, visit our forum.

What is new in the second beta of nWire 1.3.0?

  • The search accuracy and sorting was improved. It works in a more "fuzzy" manner, trying to find the most matching results. Try it out and let us know what you think.
  • The navigator elements will load asynchronously, without delaying the user interface. A spinning wheel is shown while the navigator items are loading.
  • nWire loading is now done in the background after the Eclipse workbench is open. Thus, nWire will not delay the Eclipse startup.
  • The scanning of files for changes which was done after Eclipse starts is now optional. You can turn it off in the preferences. You can manually invoke such a scan from the nWire Tools menu (right click on a project in the Project Explorer).
  • The rebuilding of the search index which was done after Eclipse starts is also optional. You can turn it off in the preferences. You can manually invoke such a scan from the nWire Tools menu (right click on a project in the Project Explorer).
  • More performance improvements

Please use the following update site URL to install the new beta: http://update-beta.nwiresoftware.com. Follow the installation instructions for the release version (using the update manager), replacing the release URL with the one above. If your trial license expired, don't worry about it: you can activate and start another trial with the new beta.

Syndicate content