was muss ein Progammierer können?
- 
					
					
					
					
 Original erstellt von Marc++us: 
 Naja, mit der Taktik der vollständigen Information wurden aber schon Schlachten gewonnen. Hängt von der Größe der Schlachten ab. Sonst kommt aus dem Abhalten von Briefings, dem Lesen und Schreiben von Mails und Memos nicht mehr raus...  Haste ´n Team oder ´n Heer? 
 
- 
					
					
					
					
 @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!     