Wenn die CPU trotz lang laufender Prozesse „idelt“ wird diese entweder nicht ausreichend mit Daten (von Festplatte oder Arbeitsspeicher) gefüttert(1) oder der Scheduler weist leer laufenden Prozessen Rechenzeit in großen Blöcken zu (2). Du programmierst Dein Zeug in einer Skriptsprache (3).
(1) Flaschenhals suchen.
(2) Naja. XAMPP. Nichts davon ist explizit für Windows programmiert, nur (teils mit Krücken-Libs) dafür kompiliert. Und den Apache gibt es nur von Drittanbietern als Windows-Version. Als man die noch bei Apache.org beziehen konnte hat man dort vor einen produktiven Einsatz unter Windows ausdrücklich wegen fraglicher Sicherheit und Leistungseinschränkungen gewarnt. Was solltest Du also tun?
(2a) Du hast ein Desktop-Windows. Ich vermute (aus für mich nahe liegenden Gründen) dass der Scheduler eines Windows-Servers kleinere „Zeitscheiben“ vergibt.
(3) Womöglich ist eine andere Programmiersprache für Dein konkretes Problem besser geeignet. Versuchs doch mal mit C++ oder Python.
(4) Ob der Taskmanager wohl alles korrekt wieder gibt?