Rendering and game loop method for optimal framerate

I’m working on creating my first serious game in Java… right now, it is relatively simple, and merely displays a few hundred BufferedImages and shapes on the screen. I decided to test various combinations of rendering and game loop methods on each of my three computers…

Method one:
Exclusive fullscreen mode, using a BufferStrategy for page flipping, iterate over elements using an infinite loop with no delay.
Results:
My main desktop computer gets 145 FPS, powerful laptop gets 33 FPS, small laptop gets 11 FPS.

Method two:
Windowed mode, using javax.swing.Timer for timing, iterate over the elements with each expiration.
Results:
Main desktop gets 545 FPS, powerful laptop gets 33 FPS, small laptop gets 31 FPS (but looks laggy like 11 FPS).

Method three:
Windowed mode, using an infinite loop and System.nanoTime() for timing, call repaint() every interval.
Results:
Main desktop gets 850 FPS, powerful laptop gets 31 FPS, small laptop gets 31 FPS (but looks laggy like 11 FPS).

To summarize, my desktop computer gets vastly better performance than either of my laptops. But the larger laptop has its own nvidia graphics card and a CPU even faster than my desktop, so I see no reason there should be a performance disparity. (Yes, I did ensure that the laptops are on performance mode, not power saving mode.)

Furthermore, I am puzzled as to why (on the desktop) windowed modes are so much faster than dedicated fullscreen mode. I was under the impression that the advantage of fullscreen dedicated mode is superior performance.

Any insight into these issues would be appreciated.