was muss ein Progammierer können?
- 
					
					
					
					
 @Gregor: Das glaube ich zwar nicht. Aber testen kann ja nicht schaden. 
 
- 
					
					
					
					
 Getestet: 
 Unoptimiert:Zahl: 20000 Zeit: 39984 Zahl: 20000 Zeit: 23937 Zahl: 20000 Zeit: 10672Optimiert: Zahl: 20000 Zeit: 28562 Zahl: 20000 Zeit: 5453 Zahl: 20000 Zeit: 5469Code: #include <iostream> #include <time.h> int main() { const int N = 150000, M = 20000; int a[N] = {0}; clock_t t = clock(); int i, j; int x = 0; for (i = 0; i < M; i++) for (j = 0; j < N; j++) x &= a[j]++; clock_t d = clock() - t; std::cout << "Zahl: " << x + a[20] << std::endl << "Zeit: " << d << std::endl; memset(a, 0, sizeof(a)); t = clock(); x = 0; for (i = 0; i < N; i++) for (j = 0; j < M; j++) x &= a[i]++; d = clock() - t; std::cout << "Zahl: " << x + a[20] << std::endl << "Zeit: " << d << std::endl; memset(a, 0, sizeof(a)); t = clock(); x = 0; for (i = 0; i < N; i++) { int v = a[i]; for (j = 0; j < M; j++) x &= v++; a[i] = v; } d = clock() - t; std::cout << "Zahl: " << x + a[20] << std::endl << "Zeit: " << d << std::endl; }
 
- 
					
					
					
					
 @Gregor: wie du siehst optimiert Java doch ein bisschen. 
 
- 
					
					
					
					
 Original erstellt von Mr. N: 
 @Gregor: wie du siehst optimiert Java doch ein bisschen.Ja! OK! Stimmt! ...übrigens mag mein g++ die 2. Variante überhaupt nicht. bei stärkster Optimierung braucht sie fast 50% mehr Zeit, als Variante 1. ...Variante 3 wird sehr gut optimiert. ...vielleicht sollte man auch bei C++ dem Compiler so viel Optimierungen, wie möglich abnehmen, so dass er selbst nur noch wenig machen muss. ...dann dürfte zumindest ähnliche Performance auf verschiedenen Compilern eher der Fall sein. BTW : Das ist eine Sache, die mich an C++ sehr stört. Die Performance der Programme ist sehr stark compilerabhängig. Das kann aber auch daran liegen, dass sich viele einfach viel zu sehr auf die tollen Optimierungen ihres Compilers verlassen. [ Dieser Beitrag wurde am 06.01.2003 um 19:40 Uhr von Gregor editiert. ] 
 
- 
					
					
					
					
 Das ist kein Grund gegen C++ :D. Welchen g++ hast du? 
 
- 
					
					
					
					
 Original erstellt von Mr. N: 
 Das ist kein Grund gegen C++ :D. Welchen g++ hast du?Ein Grund gegen C++ ist das sicherlich nicht. ...ich finde es aber trotzdem doof! Ich habe g++ aus MinGW 2.0.0-3. Das dürfte also eine recht neue Version sein. 
 
- 
					
					
					
					
 $ g++ -v Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/3.2/specs Configured with: /netrel/src/gcc-3.2-3/configure --enable-languages=c,c++,f77,java --enable-libgcj --enable-threads=posi x --with-system-zlib --enable-nls --without-included-gettext --enable-interpreter --disable-sjlj-exceptions --disable-ve rsion-specific-runtime-libs --enable-shared --build=i686-pc-linux --host=i686-pc-cygwin --target=i686-pc-cygwin --enable -haifa --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --includedir=/nonexistent/include --libexecd ir=/usr/sbin Thread model: posix gcc version 3.2 20020927 (prerelease)
 
- 
					
					
					
					
 Und mit meinem g++ unter Cygwin: Zahl: 20000 Zeit: 27594 Zahl: 20000 Zeit: 7734 Zahl: 20000 Zeit: 5657
 
- 
					
					
					
					
 C:\Dokumente und Einstellungen\Otaku\Desktop\Temp>g++ -o Test.exe Test.cpp C:\Dokumente und Einstellungen\Otaku\Desktop\Temp>Test 
 Zahl: 20000
 Zeit: 30183
 Zahl: 20000
 Zeit: 24735
 Zahl: 20000
 Zeit: 18267C:\Dokumente und Einstellungen\Otaku\Desktop\Temp>g++ -o Test.exe Test.cpp -O3 C:\Dokumente und Einstellungen\Otaku\Desktop\Temp>Test 
 Zahl: 20000
 Zeit: 22812
 Zahl: 20000
 Zeit: 30394
 Zahl: 20000
 Zeit: 4306C:\Dokumente und Einstellungen\Otaku\Desktop\Temp>g++ -v 
 Reading specs from C:/MinGW/bin/../lib/gcc-lib/mingw32/3.2/specs
 Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=
 mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable
 -languages=f77,c++,objc,ada --disable-win32-registry --disable-shared
 Thread model: win32
 gcc version 3.2 (mingw special 20020817-1)Zum Vergleich die Java-Version : E:\JavaProjects\CacheTest>java CacheTest 
 Variante 1 :
 Zahl : -1294967296
 Zeit : 23755
 Variante 2 :
 Zahl : -1294967296
 Zeit : 18146
 Variante 3 :
 Zahl : -1294967296
 Zeit : 7410E:\JavaProjects\CacheTest>java -version 
 java version "1.4.1_01"
 Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01)
 Java HotSpot(TM) Client VM (build 1.4.1_01-b01, mixed mode)
 
- 
					
					
					
					
 @Gregor: Teste das mit -O3 nochmal. Wenns nicht klappt kannst du dich über _deinen_ g++ ärgern. 
 
- 
					
					
					
					
 Original erstellt von Mr. N: 
 @Gregor: Teste das mit -O3 nochmal. Wenns nicht klappt kannst du dich über _deinen_ g++ ärgern.Ich habe das schon diverse male neukompiliert und getestet! ...und ich ärgere mich über den Compiler!     