|
|
|||||||||||||||||||||||||||||||||||||
Fabrizio Giudici's BlogApril 2008 ArchivesApple's Java 6 on Mac OS X availablePosted by fabriziogiudici on April 29, 2008 at 11:27 PM | Permalink | Comments (12)Now the scoop is not that we had to wait 1.5 years before it to be available, but the fact that it only supports 64bit Intel processors. No support for 32bit, no support for PPC. Yeah, PPC is dead, but how many existing installations exist with PPC and 32 bit Intel? And how long you'll have to wait before there's a decent percentage of 64bit installations so you can put it as a requirement for your app? Not counting that if you bought a Mac earlier than 2 years ago, like me, you just need to buy some new gear to start developing with it. Of course this is just whining. As a lot of people will hurry to say today, life is good, Apple is nice, and there's absolutely no need to worry about. Benchmarks and (less) surprises (?)Posted by fabriziogiudici on April 26, 2008 at 05:46 PM | Permalink | Comments (4)As a follow-up of my previous post, I've cleaned up my benchmark code (the log files have been reduced in size from 40MB to 800kB, some bugs have been fixed and the UUID strategy has been chosen for generating primary keys in the database, thus reducing contention chances with multiple threads). At this point the impact of logging should be neglectable, thus the comparison makes more sense (if you haven't read my previous post, the test reads metadata from about 150+ photos and insert them into a Derby database, with both single- and multi-thread approaches; the test is run with different software combinations but always on the same hardware, my MacBook Pro first generation, 2GHz, 2GB RAM; numbers are seconds per photo, the lower the better). Workers Linux Ubuntu 8.04 Windows XP Mac OS X 10.5In this round of tests I introduced a double benchmarking for every platform, by using both the "Client" JIT (java -client) and the "Server" one (java -server). Here are some points:
The instructions to reproduce this are in my previous post, this time you must use -r 5368 for checking out the blueMarine code. In any case, at least with Windows and Linux I'm reaching my performance goal, which is 0.20 seconds per photo. Indeed, considering some known issues of my code, I should be able to make better than it. *** Edited to add: To make things easier to read, I'm adding a table with normalized values. The percentages indicates how slow a test runs (e.g. 100% means that it runs at half speed). Best performers are marked in green, worse performes in red; also a specific comparison among Java 5 only VMs is given. In each column pair, the "Client" JIT figure is at the left side, the "Server" JIT figure at the right.
Benchmarks and surprisesPosted by fabriziogiudici on April 14, 2008 at 02:45 PM | Permalink | Comments (6)I'm posting some results from my latest benchmarks on the Metadata facility of blueMarine - take them with half a pinch of salt, since I've checked them but not double-checked, sorry but I have just a little time in these days. They gave some little surprise to me. In short, the test takes about 160 photos and imports all the metadata into a Derby database (details for reproducing it below). In total, 10000+ records are imported. The tests run with a classic Master / Worker pool with 1, 2, 3 and 4 workers on a MacBook Pro 2GHz, 2GB RAM in all the combinations of (Java 5, Java 6) x (Mac OS X 10.5, Linux Ubuntu 8.04, Windows XP) - note that I've used Soylatte on Java 6 since I don't have a 64 bit computer and can't run the Java 6 previews from Apple (thanks, Apple). The benchmark figure is the number of seconds needed to import a photo, so the lower the number, the better.
Before commenting, keep in mind the following points:
To reproduce:
Historic series of profiling dataPosted by fabriziogiudici on April 06, 2008 at 06:30 AM | Permalink | Comments (2)After fighting with some showstoppers in the NetBeans Profiler (involving RCP projects) and finding a decent workaround, I've started the tuning of the Metadata facility for blueMarine. I've already done tuning in the past, of course, but I have always had some frustration in how I easily lost the traceability of the thing. I'm giving an example: a few days a go I ran the profiler and got some figures; in particular two methods were the hot spots of the test and I realized it was not good. Working on those methods, I was able to push them down in the list. To help during the job, I exported some dumps of the NetBeans Profiler, manually spotted the most important numbers and manually tracked them build after build.
Of course, you can deal with it: just run another session of profiling, get the new list of hot spots, etc... The point is that since I run profiling sessions every in a while, I'm likely to have forgotten a bit about the context. I can fix this by writing comments and entries in the issue tracker, but this is time expensive. My point is that it would be nice to put some automatic stuff in the CI facility. For instance, I could run a test in profiling mode, dump the hot spots data and plot a graph showing the values (percentage and time ticks) for the five methods on the top of the list and a sixth record with the data of all the rest. This would save me a lot of time and - in the spirit of CI - it would be done incrementally for each build, allowing you to relate repository modifications with sudden changes in the performance (e.g. you see that a method at a certain build has suddenly moved up to the top of the hot spots, and you could easily track the commit version and find out which changes are responsible for that. What do you think? I don't think there's a plugin for Hudson already available, but I could make one - I think there's already a plugin for plotting graphs if you produce a file with a given format, the only thing I need is a (FLOSS) library that allows me to read a profiler dump. The troubles with dinosaur and close technologies...Posted by fabriziogiudici on April 03, 2008 at 06:14 AM | Permalink | Comments (2)Adobe has just announced that it will be impossible to have the next Photoshop to support 64 bits on Mac OS X systems. The reason is that Apple notified, the past June, that it won't support 64 bits for Carbon, so Adobe has to rewrite it on Cocoa and this would affect about one million (!) LOCs. While in the past Java has had big troubles for supporting the desktop, and nowadays still a few issues remain, it appears clear how big is its advantage in such scenarios: with Java you can get 64 bit support almost for free (supposing you have a good 64 bit VM support, which happens in Windows and Linux). It's also appalling to me to learn that strategic software manufacturers such as Adobe (I don't think Apple would have been so successful in some marketing segments that were strategic in the past without the contributions of superb products such as the Adobe Suite) don't get early warnings from Apple about its close technologies such Carbon and Cocoa (Adobe's statement refers to WWDC news). This makes me understand even better how important is to work with open technologies. blueMarine goes semanticPosted by fabriziogiudici on April 01, 2008 at 06:13 AM | Permalink | Comments (0)Today Jazoon '08 has published the final program and I don't see my proposal there, so I've not been selected. Usual business in the conference world, sometimes you get accepted and sometimes not - it's only strange that I didn't receive any personal notification about that, it must have been lost somewhere. In any case, the proposed paper was named "blueMarine goes semantic" and - you get it - it was about the integration of blueMarine with semantic technologies - note that I'm not strictly referring to semantic web, but semantic technologies in general. There is some preliminary code (not yet in the public source repository) and, given the Jazoon news, at this point I'm suspending the work until past JavaOne. So, this is just a teaser, expect me blogging about that after next May. PS And not, this is not another April's fool :-) I must admit: Eclipse is the best tool in its classPosted by fabriziogiudici on April 01, 2008 at 12:22 AM | Permalink | Comments (5)Well, this is the sound opinion of a person who has been using it for years. There's no history: Eclipse is just the best tool of its class. I've tried some alternatives, but nothing allowed me to operate quickly and having such a clean result as Eclipse did. Just nothing. And if you're in pain, trying to deliver when operating in the field, maybe in a problematic environment, Eclipse just gets you out of your troubles in a few minutes. Don't trust of what competitors say, it's marketing hype, Eclipse is just the best tool of its class. Long life to Eclipse! :-) | |||||||||||||||||||||||||||||||||||||
|
|