Hello. I experienced a strange efficiency problem in my code and after
some debuging I find that std::sprintf is very slow. Indeed it's even
different from the sprintf function in <stdio.h>.
When doing the following test:
#include <stdio.h>
// #include <cstdio>
// using std::sprintf;
int main () {
int i;
for (i = 0; i < 500000; i++){
char x[100];
sprintf(x, "x%dx%dx", i, i<<2);
}
}
the std::sprintf in <cstdio> is 15 times slower. Here is the timing.
$ time ./stdio
real 0m0.557s
user 0m0.046s
sys 0m0.046s
$ time ./cstdio
real 0m7.465s
user 0m0.031s
sys 0m0.077s
I also timed with different mingw-w64 build (rubenvb, drangon, and
mingw-builds), and find that all 32bit version using <cstdio> timed
4.x seconds and 64bit versions 7.x~8.x seconds. And all versions using
<stdio.h> timed around 0.4~0.6 second.
In gdb I find that the sprintf implementation calls msvcrt's sprintf
after some jumps while std::sprintf calls some mingw function.
Why is that two function different? If there is a reason then why is
std::sprintf so slow?
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:
Build for Windows Store.
http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public