Benchmarktest

Hallo zusammen,

kann jemand das hier beschriebene Script in C / C++ umsetzen?

http://www.wer-weiss-was.de/cgi-bin/forum/showarticl…

würde mit dem script gerne einen benchmarktest durchführen.

Gruß
Phillip

Hallo

kann jemand das hier beschriebene Script in C / C++ umsetzen?
http://www.wer-weiss-was.de/cgi-bin/forum/showarticl…
würde mit dem script gerne einen benchmarktest durchführen.

mach ma (als cpp/c++ kompilieren):
[converter.cxx]

#include 
#include 
#include 

 int main(int argc, char\*argv[])
{
 const BUFLEN=0x100000, MAXTOKEN=0x100000;
 char \*buffer=new char[BUFLEN+1];
 char \*\*tok=new char\*[MAXTOKEN], t\_head[256];
 char \*names[] = { "testimp.csv", "testexp1.csv", "testexp2.csv" } ;
 FILE\* i\_file = fopen(names[0], "rt"); if(!i\_file) { perror(names[0]); exit(-1); }
 FILE\* k\_file = fopen(names[1], "wt"); if(!k\_file) { perror(names[1]); exit(-1); }
 FILE\* t\_file = fopen(names[2], "wt"); if(!t\_file) { perror(names[2]); exit(-1); }

 while( fgets(buffer, BUFLEN, i\_file) != NULL ) {
 if( strncmp(buffer, "KO;", 3) == 0 ) { // KO found
 fprintf(k\_file,"NULL%s\n", buffer+3);
 }
 if( strncmp(buffer, "T;", 2) == 0 ) { // T found
 int ntok=0;
 char \*p=tok[ntok]=buffer;
 // start the tokenizer
 while(\*p) {
 while(\*p && \*p!=';') ++p;
 if(\*p) { tok[++ntok] = p+1; \*p = '\0'; ++p; }
 }
 int pos=3,cnt=0; 
 // write record
 sprintf(t\_head,"NULL;%s",tok[2]);
 while(pos Grüße

CMБ

Hallo CMБ,

habe gerade probiert dein Programm zu compilieren:

pg@ubuntu:/var/www/test$ g++ --version
g++ (GCC) 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

pg@ubuntu:/var/www/test$ g++ import\_cpp.cpp
import\_cpp.cpp:42:2: warning: no newline at end of file
import\_cpp.cpp: In function âint main(int, char\*\*)â:
import\_cpp.cpp:7: error: ISO C++ forbids declaration of âBUFLENâ with no type
import\_cpp.cpp:7: error: ISO C++ forbids declaration of âMAXTOKENâ with no type
pg@ubuntu:/var/www/test$

mache ich beim compilieren irgendetwas falsch?

Gruß
Phillip

Hallo

mach ma (als cpp/c++ kompilieren):

arbeitet tadelos auf dem Windoof system, compiliert mit VisualStudio KonsolenAnwendung leeres Project :smile:

kann doch so einfach sein das leben, ich glaub ich sollte nicht alles pur in OOP proggen :smile: sieht so kurz und einfach aus und funktioniert dennoch :smile:

Hallo

  1. in der export datei 1 ist ein zeilenumbruch zuviel , nach jedem eintrag (lerrzeile)

output export1

NULL;2527979;C;TGF;DFD;;C;;;;;;;;;;;;;H;;;

NULL;2527979;C;TGF;DFD;;C;;;;;;;;;;;;;H;;;

NULL;2527979;C;TGF;DFD;;C;;;;;;;;;;;;;H;;;

NULL;2527979;C;TGF;DFD;;C;;;;;;;;;;;;;H;;;

NULL;2527979;C;TGF;DFD;;C;;;;;;;;;;;;;H;;;
  1. ist keine laufende nummer drinne nach dem 2 Feld
    bezogen auf

    File 2:
    Alle Zeilen die mit T anfangen.
    Es sollen immer Nur Feld 3, eine laufende nr und alle folgenden Felder in 5er blöcken
    Beginnen muss die Zeile mit NULL;

    Soll Ausgabe:

     NULL;2527979;1;2527979;;TGF;DFD;1
     NULL;2527979;2;2;3;4;a;b
     NULL;2527979;3;c;s;;;
     NULL;2527979;4;2527979;;TGF;DFD;1
     NULL;2527979;5;2;3;4;a;b
     NULL;2527979;6;c;s;;;
    

    dein output export2

     NULL;2527979;1;2527979;;TGF;DFD;1
     NULL;2527979;2;2;3;4;a;b
     NULL;2527979;3;c;s;;;
     NULL;2527979;1;2527979;;TGF;DFD;1
     NULL;2527979;2;2;3;4;a;b
     NULL;2527979;3;c;s;;;
    

    nur zur info :smile: (will ja nur helfen)

Hallo nochmal,
ich habe die C-version nochmal korrigiert. Sie
läßt sich jetzt auch mit gcc 4.x übersetzen
(const unsigned) und das \n ist auch raus.
Allerdings denke ich, dass sich die lfd. Nr. in #2
auf den aktuellen Block bezieht und demnach so
sein soll.

$> gcc -O3 -o cconverter cconverter.cxx -lstdc++
$> time ./cconverter

#include 
#include 
#include 

 int main(int argc, char\*argv[])
{
 const unsigned BUFLEN=0x100000, MAXTOKEN=0x100000;
 char \*buffer=new char[BUFLEN+1];
 char \*\*tok=new char\*[MAXTOKEN], t\_head[256];
 char \*names[] = { "testimp.csv", "testexp1.csv", "testexp2.csv" } ;
 FILE\* i\_file = fopen(names[0], "rt"); if(!i\_file) { perror(names[0]); exit(-1); }
 FILE\* k\_file = fopen(names[1], "wt"); if(!k\_file) { perror(names[1]); exit(-1); }
 FILE\* t\_file = fopen(names[2], "wt"); if(!t\_file) { perror(names[2]); exit(-1); }

 while( fgets(buffer, BUFLEN, i\_file) != NULL ) {
 if( strncmp(buffer, "KO;", 3) == 0 ) { // KO found
 fprintf(k\_file,"NULL%s", buffer+3);
 }
 if( strncmp(buffer, "T;", 2) == 0 ) { // T found
 int ntok=0;
 char \*p=tok[ntok]=buffer;
 // start the tokenizer
 while(\*p) {
 while(\*p && \*p!=';') ++p;
 if(\*p) { tok[++ntok] = p+1; \*p = '\0'; ++p; }
 }
 int pos=3,cnt=0; 
 // write record
 sprintf(t\_head,"NULL;%s",tok[2]);
 while(pos 



> kann jemand das hier beschriebene Script in C / C++ umsetzen?  
>   
> http://www.wer-weiss-was.de/cgi-bin/forum/showarticle.fpl?ArtikelID=4272247  
>   
> würde mit dem script gerne einen benchmarktest durchführen.  
>   
> Gruß  
> Phillip