Uh, "twice as fast if not more depending on the hardware it runs on"?? Ah, if only the world worked this way.
For example, take a look at this article: Ubuntu 12.04 LTS: 32-bit vs. 64-bit Performance.
While some of the synthetic benchmarks show drastic performance gains, there are also many which show either just minor (10% to 30%) gains, no gains, or even a performance decrease. And those are just synthetic benchmarks which usually does not give useful insight into what the system performance will be when doing something other than running benchmarks.
System performance is very much influenced by "system" bottlenecks and you can't make sweeping generalizations such as twice the bits implies twice the performance.
Having said that, I still try to use the 64-bit flavors of operating systems because I expect the performance to be at least somewhat better. While the size of the CPU registers is doubled, possible of more importance is that the number of registers increases from eight in x86 to sixteen in x86_64 64-bit mode. This allows a compiler to potentially produce faster code. There are a number of these instruction tweaks which, while probably insignificant in any one instance can add up when used system wide to a useful performance gain.
There is also little if any performance loss for programs compiled for 32-bit x86 since they can be run in "compatibility mode".
People often make the generalization that if you only have 4GB or less of memory then there is no difference between 32-bit and 64-bit and thus no reason to use the 64-bit version. This is simply not true. The instruction architecture of the CPU is different enough (IMO) in 64-bit mode to prefer using the 64-bit OS if your hardware supports it.
After all, you wouldn't want to run your 32-bit CPU in 16-bit mode, would you? :-)
This is due to the Mobile Intel 945GM Express in your laptop.
I own a Thinkpad T60, which uses the same chipset. It was one of the first northbridges from intel for the Core2Duo 64-bit CPUs. They failed in designing it.
The chipset can only theoretically address 4GB of RAM, yet also has to address other hardware (I/O memory). It reserves the upper 1GB memory range for that. The 64bit logical memory address support in the Linux kernel doesn't help, because the mainboard and northbridge only provide for a 32bit physical address bus to the CPU. And there is no workaround.