- Home /
Why is Debug.Log so much slower on Windows than Mac?
Debug.Log is runs 4-5 times slower on my 64-bit Windows 7 machine than on my Macbook Air, even though everything else runs faster, as expected given the Windows machine has a faster processor. It's ultimately not a big deal, though it does mean you can't reliably use Debug.Log to print out timestamps for quickie performance tuning at a fine-grained level.
My question is partly out of curiosity, partly in case this gives insight into any other performance gotchas with Windows versus Mac with Unity -- why is Debug.Log slower on Windows than Mac?
Answer by Alec Thilenius · Dec 20, 2012 at 04:40 AM
Printing is slow, as a rule of thumb. Unless one of the Unity programmers gets on here you may not get a satisfying answer as to why its actually slower. I dont know how the console is implemented. My guess why its slower has to do with OS specific stuff, just like std::cout or Console.WriteLine()
If you want to take snapshots with a LOT of prints, just cache them in memory. Create a 'logger' class, and have all MyLoggerClass.Log("...") just add the string to a Queue. Print the Queue to console after X seconds, or based on some other trigger.
Answer by MountDoomTeam · Mar 05, 2013 at 07:55 PM
it's bad programming from Unity. It is all withheld within the unity program, the printing function should simply add strings and values into arrays during runtime and put them on the console at the end of the frame.
if making an array of 10,000 strings can take a matter of minutes, there is an error somewhere in the unity program.
I think they should Make printing speedy because it's a very useful for people learning and just for code monitoring.
Answer by IVxIV · Jan 27, 2014 at 09:41 AM
This was a big issue for our project as well (if you think Windows is bad, it's literally hundreds of times slower on mobile), so I wrote a replacement to the UnityEngine.Debug class which provides MUCH faster performance. I also wrote a number of other C# Unity debugging tools as well and have packaged them up into a Unity plugin. Check it out if you're interested, it's the ProDebug plugin.
Happy debugging
That sounds fantastic, Unity should buy it from you and install it as standard.
Your answer
Follow this Question
Related Questions
Debug.Log() in build 9 Answers
Framerate differences between Windows and Mac 2 Answers
"Out of Memory" on Windows Build, Runs perfectly on Mac Build 1 Answer
Mac VS Windows Builds 3 Answers