Best (Java) book for understanding 'under the bonnet' for programming?
- by Ben
What would you say is the best book to buy to understand exactly how programming works under the hood in order to increase performance? I've coded in assembly at university, I studied computer architecture and I obviously did high level programming, but what I really dont understand is things like:
-what is happening when I perform a cast
-whats the difference in performance if I declare something global as opposed to local?
-How does the memory layout for an ArrayList compare with a Vector or LinkedList?
-Whats the overhead with pointers?
-Are locks more efficient than using synchronized?
-Would creating my own array using int[] be faster than using ArrayList
-Advantages/disadvantages of declaring a variable volatile
I have got a copy of Java Performance Tuning but it doesnt go down very low and it contains rather obvious things like suggesting a hashmap instead of using an ArrayList as you can map the keys to memory addresses etc. I want something a bit more Computer Sciencey, linking the programming language to what happens with the assembler/hardware.
The reason im asking is that I have an interview coming up for a job in High Frequency Trading and everything has to be as efficient as possible, yet I cant remember every single possible efficiency saving so i'd just like to learn the fundamentals.
Thanks in advance