Re: [xml] xmlDocDumpMemory() is VERY slow on Win32
- From: Steve Hay <steve hay uk radan com>
- To: Steve Hay <steve hay uk radan com>
- Cc: xml gnome org
- Subject: Re: [xml] xmlDocDumpMemory() is VERY slow on Win32
- Date: Mon, 12 Jul 2004 14:35:46 +0100
I've just discovered something else very strange going on, which enables
me to present a small self-contained test case.
Previously, I could only reproduce the slowness with a particular XML
file that I was working with. Whenever I tried to have the test program
create an XML file itself for the purposes of testing, the speed
difference did not show up.
The XML file that I was working with declared the encoding to be
"iso-8859-1", but I was omitting the encoding declaration in the test
XML files that I was creating. It turns out that this also affects things!
The following program:
#include <stdio.h>
#include <time.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
int main(void) {
char *file = "foo.xml";
char *line = "..................................................\n";
char *encodings[] = { "encoding=\"iso-8859-1\"", "encoding=\"utf-8\"",
"" };
FILE *f;
time_t start, end;
xmlDocPtr doc;
xmlChar *result;
int i, j, len = 0;
for (i = 0; i < 3; i++) {
if ((f = fopen(file, "w")) == NULL) {
printf("can't write test file!\n");
return 3;
}
fprintf(f, "<?xml version=\"1.0\" %s?>\n", encodings[i]);
fprintf(f, "<test><![CDATA[\n");
for (j = 0; j < 200000; j++) {
fprintf(f, line);
}
fprintf(f, "]]></test>\n");
fclose(f);
if ((doc = xmlReadFile(file, NULL, 0)) == NULL) {
printf("can't read test file!\n");
return 4;
}
time(&start);
xmlDocDumpMemory(doc, &result, &len);
time(&end);
if (result == NULL) {
printf("can't dump test file!\n");
return 5;
}
printf("%s: %d seconds\n", encodings[i], end - start);
xmlFree(result);
xmlFreeDoc(doc);
unlink(file);
}
return 0;
}
generates these bizarre results for me on Win32:
encoding="iso-8859-1": 15 seconds
encoding="utf-8": 15 seconds
: 0 seconds
Why is xmlDocDumpMemory() so much slower when an encoding is declared?
This is using libxml2-2.6.11 built with MSVC++ 6.0 the same way as
described in my original posting.
What results does the program produce on Linux?
Does this help anyone help me with this problem?
- 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]