After installing the latest driver version on this computer (NVIDIA 258.96) the ChoosePixelFormat time is now 200-250ms.
But if i stop all my other threads first, so that this call has exclusive access to both core’s, then this drops to 120ms.
I traced what it is actually doing and found that ChoosePixelFormat calls DescribePixelFormat repeatedly and the FIRST time DescribePixelFormat is called it loads several DLL’s and initialises OpenGL.
ChoosePixelFormat/DescribePixelFormat is only taking 30ms itself, the rest of the time is the OpenGL initialisation time.
I also found that immediately after rebooting the computer the times to create a window, call ChoosePixelFormat and create a context all were more than doubled, probably because several required DLL’s had not yet been loaded into memory.
The only way to make this faster is to have the application startup automatically at boot time with a hidden window and go into an idle state until needed.
This is what the tray applications do, so you could make a tray application that pops up instantly when someone clicks on the icon, by pre-creating the OpenGL window and hiding it until needed.