Re: [xml] xmlDocDumpMemory() is VERY slow on Win32
- From: <Eric Zurcher csiro au>
- To: <xml gnome org>
- Cc:
- Subject: Re: [xml] xmlDocDumpMemory() is VERY slow on Win32
- Date: Wed, 14 Jul 2004 10:08:39 +1000
Hi.
Steve's simple little sample program gives some very interesting results on my Windows 2000 system. Using VC
7, I get an executable that takes about 19 seconds to run. When I compile with gcc, the resulting executable
runs in under a second. If I use the Borland compiler to build a command-line application, it also requires
about 19 seconds to run, but if I use the same compiler, but build it as a VCL (Windows) application, it runs
in under 1 second! No such change in performance was obtained, however, when using VC 6 to build a Windows
application.
These differences are apparently due to differences in the way the various run-time libraries are handling
"realloc".
Well, Steve, maybe you can just switch compilers and RTLs instead of switching platforms <G>.
Eric Zurcher
CSIRO Livestock Industries
Canberra, Australia
Eric Zurcher csiro au
-----Original Message-----
I now share Igor's bad feeling about this in the light of the following
program:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>
void main(void) {
char *buf;
int i, size;
time_t start, end;
size = 16000;
if ((buf = malloc(size)) == NULL) {
printf("malloc failed\n");
exit(3);
}
else {
printf("malloc OK (%d)\n", size);
}
time(&start);
for (i = 0; i < 640; i++, size += 16000) {
if ((buf = (char *)realloc(buf, size + 16000)) == NULL) {
printf("%03d: realloc failed\n", i);
exit(4);
}
else {
printf("%03d: realloc OK (%d to %d)\n", i, size, size + 16000);
}
}
time(&end);
free(buf);
printf("%d seconds\n", end - start);
exit(0);
}
Could somebody please try this on Linux (well, anything other than Win32
I guess) and tell me how long it takes to run?
On my P4 2GHz Win32 box it takes 15seconds -- exactly the same time as
the XML parsing/dumping earlier! (And it's just as slow without the
printf() calls in it.)
I dare say the time will be 0 or 1 second on Linux.
My soul is indeed lost :( Where do I go from here? (Don't say Linux...)
- Steve
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]