Thursday, September 8, 2011

Galaxy S II

I've sold off my good old Samsung Galaxy S to a good friend of mine as I bought the Samsung Galaxy S II.
20 minutes after closing the deal at the shop, I've rooted the device. LOL.

My comments:

Almost everything is as expected. The dual core Exynos 1.2 GHz processor really delivers great performance. I noticed no whatsoever lag during launching and switching of applications. The phone really 'flies'. I haven't use other Android phones before so to me, the GPS performance for this 2nd generation Galaxy S is super fast! A major jump from the failed GPS chip in the first generation. Movies and pictures on the new screen utilizing the Super Amoled Plus technology is a delightful sight to behold. Haven't tested for 1080 full HD yet. But the pictures snapped is of a good quality although not as sharp as Sony Ericsson's Xperia Arc.

My only complain is that at stock factory settings, it's still using Gingerbread 2.3.3 which comes with that super horrible Android OS battery draining bug. I wonder why Samsung have yet to roll out the update to 2.3.4 which fixes that particular bug. My hands are getting itchy to flash those 2.3.4 custom roms because of this.

my thoughts on ORM and database performance

Some people (especially junior developers) who just learnedORM technologies did not understand that sometimes, it is important to write SQL instead of traversing the objects. Yes it is simpler to just get the object from the database and traverse it but depending on the 'loading' mode, you could be writing a program with bad performance issue.

On eager fetching, ALL the related objects will be fetched. You don't really want to do this all the time as it is a resource consuming process.

On lazy fetching, only the object that is directly specified in the query is fetched. Only when we want to traverse along the relation, then only it will load the related objects. This will cause multiple queries to the database.

So, in my humble opinion, it is better to directly query (using the ORM's query language) for the objects that you need instead of being lazy and only depend on the ORM's fetching mechanism. Probably a bit hard to get it right if you aren't familiar with multiple table joins but seriously it is worth the time and yields better application performance.

Conclusion: a good software developer should not neglect learning database related aspect of the field.