On Apr 26, 12:10 pm, n00m <[EMAIL PROTECTED]> wrote: > Both codes below read the same huge(~35MB) text file. > In the file > 1000000 lines, the length of each line < 99 chars. > > Stable result: > Python runs ~0.65s > C : ~0.70s > > Any thoughts? > > import time > t=time.time() > f=open('D:\\some.txt','r') > z=f.readlines() > f.close() > print len(z) > print time.time()-t > m=input() > print z[m] > > #include <cstdio> > #include <cstdlib> > #include <iostream> > #include <ctime> > > using namespace std; > char vs[1002000][99]; > FILE *fp=fopen("D:\\some.txt","r"); > > int main() { > int i=0; > while (true) { > if (!fgets(vs[i],999,fp)) break; > ++i; > } > fclose(fp); > cout << i << endl; > cout << clock()/CLOCKS_PER_SEC << endl; > > int m; > cin >> m; > cout << vs[m]; > system("pause"); > return 0; > > } > >
First try again with pure C code and compile with a C compiler, not with C++ code and C++ compiler. Then, tweak the code to use more buffering, to make it more similar to readline code, like this (not tested): #include <stdio.h> #include <time.h> char vs[1002000][100]; char buffer[65536]; int main(void) { FILE *fp; int i, m; clock_t begin, end; double t; begin = clock(); fp = fopen("cvspython.txt", "r"); i = 0; setvbuf(fp, buffer, _IOFBF, sizeof(buffer)); while(1) { if(!fgets(vs[i], 100, fp)) break; ++i; } fclose(fp); printf("%d\n", i); end = clock(); t = (double)(end - begin)/CLOCKS_PER_SEC; printf("%g\n", t); scanf("%d", &m); printf("%s\n", vs[m]); getchar(); return 0; } Finally, repeat your statement again, if necessary. -- http://mail.python.org/mailman/listinfo/python-list