I have a huge Excel sheet that takes about 5min or so to recalculate values in all the columns. The sheet is stored locally, so it is not a network speed issue, and I am not running any other applications at the time this is running, just Excel and a few background processes.
My question is regarding the hyperthreading feature (P4 3.0Ghz 1.5GB RAM). I see that the process EXCEL.EXE rarely goes over 50%, and there is an option to disable hyperthreading in the BIOS. Ive never tried disabling it and I wonder what might go wrong if I tried it. Would disabling hyperthreading allow the system to allocate more processor to excel?
I’m sure it is not the best way to solve the problem, and I probably could figure out a way to get this done in Access or VB, but I just need to get it done and I know how to do it in Excel.
I doubt that it will make a huge difference – it might even make the performance worse. Hyperthreading makes Windows see 2 CPUs on the system(although in reality the second CPU is not a full CPU – it shares a lot of resources with the first CPU). The 50% CPU utilization indicates that Excel is using 50% of the total CPU resources that Windows thinks that it has, which is 50% of two full CPUs. In other words, Excel is talking 100% of CPU time on one of the “CPUs”. If you disable Hyperthreading you’ll probably see Excel get up to 100% CPU time, but I bet that Excel won’t be running any faster because it’s still using the same CPU resources it had access to with Hyperthreading on.
I’m not sure I understand, shouldn’t it be theoretically possible for one process to use close to 100 of the processing power%?
I could swear that I have seen processes with CPU utilization >50% on this machine. Maybe those were multithreaded or more hyperthreading “aware” apps though, I’m not at work any more to check.
Hyperthreading is not true multithreading; there is still only one processing core on your chip. The advantage of hyperthreading is that it hides memory latency by fetching multiple instructions for the execution pipeline. On a cache miss, for example, the processor has another instruction to execute immediately while the memory fetch occurs. The operating system displays a HT processor as 2 logical processors. It is certainly possible to use 100% of the CPU; the fact that your Excel process is not fully using the CPU is not due to hyperthreading.
I suspect that your Excel process is memory-bound rather than CPU-bound. That is, the data processing you are doing might have a lot of relatively slow random memory accesses.