[xml] xmlDocDumpMemory() is VERY slow on Win32
- From: Steve Hay <steve hay uk radan com>
- To: xml gnome org
- Subject: [xml] xmlDocDumpMemory() is VERY slow on Win32
- Date: Fri, 09 Jul 2004 15:39:02 +0100
Hi,
Earlier today I logged a bug on bugzilla regarding a problem that seems
to affect Win32 only. Daniel Veillard replied to say that he can't
really help since he doesn't have access to Windows machines, and
suggested that I try this list instead.
Please see http://bugzilla.gnome.org/show_bug.cgi?id=146697 for
background information, but basically I have reduced the problem to
this: With a particular 10MB XML file, the following program takes
about 15 seconds to complete the while() loop on Win32, but only about 1
second on a Linux machine:
#include <stdio.h>
#include <time.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
void main(void) {
char *file = "test.xml";
time_t start, end;
xmlDocPtr doc;
xmlChar *result = NULL;
int len = 0;
while (1) {
time(&start);
if ((doc = xmlReadFile(file, NULL, 0)) != NULL) {
printf("parsed OK\n");
}
else {
printf("parsed NOT OK\n");
}
xmlDocDumpMemory(doc, &result, &len);
if (result != NULL) {
printf("dumped OK\n");
xmlFree(result);
}
else {
printf("dumped NOT OK\n");
}
xmlFreeDoc(doc);
time(&end);
printf("Took %d seconds\n", end - start);
}
}
Removing the xmlDocDumpMemory() call (and error checking) reduces the
time to about 1 second on my Win32 machine (and made little appreciable
difference on Linux).
Thus, it appears that xmlDocDumpMemory() runs very slowly on Win32.
I have the "test.xml" file that the program uses on an FTP site; please
email me for login credentials if you want to get it.
I'm using libxml2-2.6.11 on WinXP Service Pack 1. This was built with
MS VC++ 6.0 Service Pack 5 by cd'ing to libxml2's win32/ directory and
running the command:
cscript configure.js prefix=C:\libxml2 zlib=1
and then just running "nmake" and "nmake install". (This builds using
the msvcrt.lib CRT.)
This links against GNU libiconv (1.9.1) and zlib (1.2.1), also built
with msvcrt.lib. The above program is then built with:
cl -MD test.c libxml2_a.lib iconv.lib zlib.lib ws2_32.lib
(where the -MD again specifies the msvcrt.lib CRT).
One warning was produced by the linker:
LINK : warning LNK4049: locally defined symbol "_xmlFree" imported
I don't know if that is relevant or not?
Any help would be greatly appreciated. This is quite an issue for me.
Thanks,
- Steve
------------------------------------------------
Radan Computational Ltd.
The information contained in this message and any files transmitted with it are confidential and intended for
the addressee(s) only. If you have received this message in error or there are any problems, please notify
the sender immediately. The unauthorized use, disclosure, copying or alteration of this message is strictly
forbidden. Note that any views or opinions presented in this email are solely those of the author and do not
necessarily represent those of Radan Computational Ltd. The recipient(s) of this message should check it and
any attached files for viruses: Radan Computational will accept no liability for any damage caused by any
virus transmitted by this email.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]