I ask about old msvcrt.dll . Has Microsoft updated this library in newer versions of windows? or is it the exact same library that can be found on Windows 98 distributions?
I tested msvcrt against Cygwin with a test program that many times calls malloc single list block line with mutexes and semaphores. In ifdef s, a program can be compiled to use Posix functions, as well as to call Windows APIs. When compiling MinGW with WinAPI calls, the only dependency it has is kernel32.dll , ntdll.dll and msvcrt.dll , while when compiling Cygwin with Posix functions, the program will depend on cygwin1.dll .
At first, I simply assumed that the Cygwin version would run slower due to an additional emulation level for Posix functions; he should translate them to WinAPI calls. But it seems that it works 4 times faster on my machine than the compiled MinGW native binary.
The Cygwin documentation says that it uses another libc called newlib, and of course the compiled Cygwin binary seems to be independent of msvcrt. So does that make a huge difference in speed?
I also experienced so much so that when a C program calls millions of malloc s, the msvcrt.dll dependent will work many times slower than any other, depending on the newer msvcrXX.dll . They even ran slower than the same Linux program.
What happened with msvcrt.dll ? Should I avoid it whenever possible?
c windows cygwin libc msvcrt
xiver77 Apr 29 '15 at 20:37 2015-04-29 20:37
source share