Warum Java vom Prinzip her schneller als C++?



  • Gregor schrieb:

    Das C++ Kompilat braucht 37 Sekunden, das Javaprogramm 41. Das C++-Programm ist hier also etwa 10% schneller. ...hui, das bewegt die Welt und sollte in jedem Fall der entscheidende Faktor bei der Wahl der Programmiersprache sein, heh? 😃

    10% sind nicht schlimm. ich würde nicht nach java umsteigen, wenn es 10% schneller als c++ wäre.
    lieber c++ und vb.net.
    c++: zero abstraction overhead, ich kann einen primzahlensucher bauen, wo ich genau weiß, daß ich ihn in assembler nicht schneller bauen könnte.
    c++: ich kann durch geschicktes design enorm viele potenzielle fehler zu compilerfehlern machen, so daß sie nie beim kunden ankommen.
    vb.net: alles hat einen so sinnvollen und sprechenden namen, daß man nie überlegen muß, wie man seinen plan verwirklicht, die zeichen fliegen einfach so in den editor und kaum sind sie drin, kann man den kram sogar problemlos lesen.

    Naja, glaube nicht. Aber um es mal auf den Punkt zu bringen: Hier ist Java offensichtlich nicht bedeutend langsamer. Wo ist es das denn dann?

    also von anfang an hat c++ um 10% die nase vorn. und man kann, wenn man lust hat, dann noch ein wenig optimieren, was den abstand normalerweise vergrößert.

    vielleicht sowas:

    #include <iostream>
    #include <ctime>
    using namespace std;
    
    typedef unsigned int u32;
    typedef size_t Size;
    
    inline bool getBit(u32 x,int p){//TODO: asm.h benutzen
    	return (x>>p)&1;
    }
    inline void setBitTrue(u32* x,int pos){//TODO: asm.h benutzen
    	*x|=(1<<pos);
    }
    inline int findFirstBitFalse(u32 x){//TODO: asm.h benutzen
    	int result=0;
    	while((x&1)==1){
    		x>>=1;
    		++result;
    	}
    	return result;
    }
    
    class BitField{
    private:
    	u32 *data;
    	Size size;
    	BitField(const BitField &);
    	BitField &operator=(const BitField &);
    public:
       BitField(Size _size)
    		:size(_size){
    		Size wordCount=(size+31)/32;
    		data=new u32[wordCount+2];
    		data[wordCount]=0;//such-ende-marke
    		data[wordCount+1]=u32(-1);//such-ende-marke
    	}
    	~BitField(){
    		delete[] data;
    	}
    	void clearAll(){
    		Size wordCount=(size+31)/32;
    		for(Size i=0;i!=wordCount;++i)
    			data[i]=0;
    	}
    	void set(Size pos){
    		Size wordPos=pos/32;
    		Size bitPos=pos%32;
    		setBitTrue(&data[wordPos],bitPos);
    	}
    	bool get(Size pos){
    		Size wordPos=pos/32;
    		Size bitPos=pos%32;
            return getBit(data[wordPos],bitPos);
    	}
    	Size findFirstFalse(){
    		return findNextFalse(Size(-1));
    	}
    	Size findNextFalse(Size pos){
    		++pos;
    		Size wordPos=pos/32;
    		Size bitPos=pos%32;
    		u32 word=data[wordPos];
    		if(bitPos!=0)
    			word=(word>>bitPos) | (-1<<(32-bitPos));
            if(word==u32(-1)){
                do
                    word=data[++wordPos];
                while(word==u32(-1));
    			bitPos=0;
    		}
    		Size r=findFirstBitFalse(word)+bitPos+32*wordPos;
    		if(r>=size) 
    			r=Size(-1);
    		return r;
    	}
    };
    
    u32 const step[8]={4,2,4,2,4,6,2,6};
    u32 const prime[12]={2,3,5,7,11,13,17,19,23,29,31,37};
    
    class PrimeGeneratorA{
    private:
    	u32 pos;
    	int m;
    public:
        u32 findFirst(){
            m=-11;
            pos=37;
            return 2;
        }
        bool isPrime(u32 x){
            if(x%7==0) return false;
            if(x%11==0) return false;
            if(x%13==0) return false;
            if(x%17==0) return false;
            if(x%19==0) return false;
            if(x<19*19) return true;
            if(x%23==0) return false;
            if(x%29==0) return false;
            if(x%31==0) return false;
            if(x%37==0) return false;
            u32 pos=37;
            u32 m=0;
            do{
                if(x%pos==0)
                    return false;
                pos+=step[m];
                m=(m+1)&7;
            }while(pos*pos<=x);
            return true;
        }
    	u32 findNext(){
            if(m<0){
                ++m;
                return prime[11+m];
            }
            do{
                pos+=step[m];
                m=(m+1)&7;
            }while(!isPrime(pos));
            return pos;
    	}
    };
    
    template<typename POS>
    class PrimeGeneratorD{
    private:
    	static Size const SIZE=1<<17;//muss gerade sein
    	BitField field;
    	Size pos;
    	POS start;
    	void setStart(POS newStart){
    		start=newStart;
    		field.clearAll();
    		PrimeGeneratorA p;
    		p.findFirst();
    		for(POS t=p.findNext();t*t<start+2*SIZE;t=p.findNext()){
    			POS ss=start+1;//+1 nicht n©tig!?
    			Size s=(ss+t-1)%t+1;
    			s=t-s;
    			if(s%2!=0)
    				s+=t;
    			s=s/2;
    			while(start+2*s+1<=t)
    				s+=t;
    			while(s<SIZE){
    				field.set(s);
    				s+=t;
    			}
    		}
    		pos=field.findFirstFalse();
    	}
    public:
    	PrimeGeneratorD():
    		field(SIZE),
    		start(POS(-1)){
    	}
    	POS findNext(){
    		pos=field.findNextFalse(pos);
    		while(pos==Size(-1)){
    			POS newStart=start+2*SIZE;
    			if(newStart<start)
    				return POS(-1);
    			setStart(newStart);
    		}
    		return start+2*pos+1;
    	}
    	POS findFirst(POS newStart=0){
    		newStart=newStart&~1;
    		if(newStart!=start)
    			setStart(newStart);
    		else
    			pos=field.findFirstFalse();
    		if(newStart==0)
    			return 2;
    		return start+2*pos+1;
    	}
    };
    
    template<typename POS>
    class PrimeGenerator{
    private:
    	static Size const SIZE=1<<17;//muss gerade sein
    	BitField field;
    	Size pos;
    	POS start;
    	void setStart(POS newStart){
    		start=newStart;
    		field.clearAll();
    		PrimeGeneratorD<POS> p;
    		p.findFirst();
    		for(POS t=p.findNext();t*t<start+2*SIZE;t=p.findNext()){
    			POS ss=start+1;//+1 nicht n©tig!?
    			Size s=(ss+t-1)%t+1;
    			s=t-s;
    			if(s%2!=0)
    				s+=t;
    			s=s/2;
    			while(start+2*s+1<=t)
    				s+=t;
    			while(s<SIZE){
    				field.set(s);
    				s+=t;
    			}
    		}
    		pos=field.findFirstFalse();
    	}
    public:
    	PrimeGenerator():
    		field(SIZE),
    		start(POS(-1)){
    	}
    	POS findNext(){
    		pos=field.findNextFalse(pos);
    		while(pos==Size(-1)){
    			POS newStart=start+2*SIZE;
    			if(newStart<start)
    				return POS(-1);
    			setStart(newStart);
    		}
    		return start+2*pos+1;
    	}
    	POS findFirst(POS newStart=0){
    		newStart=newStart&~1;
    		if(newStart!=start)
    			setStart(newStart);
    		else
    			pos=field.findFirstFalse();
    		if(newStart==0)
    			return 2;
    		return start+2*pos+1;
    	}
    };
    
    int main(){
    	u32 const max=2000000000;
    	clock_t start=clock();
    	PrimeGenerator<u32> pg;
    	u32 c=0;
    	for(u32 i=pg.findFirst();i<max;i=pg.findNext())
    		++c;
    	double time=(clock()-start)/double(CLOCKS_PER_SEC);
    	cout<<"Zwischen 0 und "<<max<<" liegen "<<c<<" Primzahlen.\n";
    	cout<<"GesamtZeit : "<<time<<" Millisekunden \n";
    }
    

    dabei ist zu sagen, daß das auch nur ein sieb des eratosthenes ist. halt fensterweise, um in den cache zu passen, heutzutage ist das RAM ja so unglaublich langsam. und das große sieb wird von einem kleinen sieb versorgt; weil ich die alten daten vergesse, kann ich leider nicht auf's haupt-sieb zugreifen.
    miss das doch auch mal auf deinem rechner, bin gespannt. wenn mein code langsamer ist (was durchaus im rahmen des möglichen liegt, den hab ich anno domini 2000 gestrickt, da war ich noch furchtbar schlecht, und nu kann ich ihn nicht mehr verändern, weil er zu kompliziert ist), stelle ich bis zum forumstreffen auf meine homepage den satz, daß ich ein ungeschickter programmierer bin und daß java gut ist.

    java hat oft beim nutzlos-optimieren, was man kommerziell kaum tut, sondern nur für WPCs, oft die nase hinten, weil irgend ein detail, auf das es gerade ankommt, nicht sauschnell geht. obiger primzahlencode lebt von einer schnellen BitField. und die würde sich sicherlich über eine

    #pragma warning(disable:4035)//warning C4035: no return value
    inline u32 findFirstBitFalse(u32 data)
    {
    	__asm	mov		eax,dword ptr[data];
    	__asm	not		eax;
    	__asm	bsf		eax,eax;
    };
    #pragma warning(default:4035)
    

    ganz prächtig freuen. den mov optimiert der compiler nach dem inlinen übrigens weg und nimmt für not gleich das register, wo data drin lebt, so daß nur 2 maschinenbefehle übrigbleiben.

    Wenn die Leute hier andauernd sagen, wie lahm Java ist, dann sollten sie das ja auch belegen können.

    zum glück sage ich nicht dauernd, java sei lahm. java ist recht flott und theoretisch schneller als c++. es spricht ja nix dagegen, einen compilerschalter "mach keine arrayindex-prüfungen" einzubauen und auch nix gegen "ich bin der mächtige JIT-compiler, ich lese bei lokalen objekten erstmal alle möglichen ablaufpfade und schaue, ob das objekt in weniger lokale container gesteckt wird und wenn nicht, haue ich es einfach auf den stack statt in den freispeicher".
    zur zeit gibt es noch hier und da ein paar defizite. das erinnert mich an c++ mit cout und c mit printf. cout ist theoretisch schneller als printf aber faktisch nicht. eine sache, die mich täglich beim aufstehen traurig stimmt und sicherlich der hauptgrund dafür ist, daß ich nicht der glücklichste mensch auf der welt bin.



  • @volkard: Auf meinem Gentoo AMD64 3200 folgendes Ergbenis:

    C++ Gregor: 31 (Änderung: Array auf dem Heap erzeugt, sonst erhalte ich einen Segmentation Fault)
    C++ Volkard: 5,42 👍
    Java Gregor: 33018 Millisekunden (client-vm)
    Java Gregor: 33016 Millisekunden (server-vm)

    Hast Du Literaturempfehlungen wo man diese Optimierungen nachlesen/verstehen/lernen kann, die Du gemacht hast? Darf auch ruhig englisch sein. 🙂



  • Volkard ist und bleibt ein Monster 😮 😮



  • Da hat volkard wieder gerockt. 👍
    Bei mir ist die C++-Version nicht so schnell wie bei Benchmark-Ergebnisse. AMD Athlon 64 3400+, Win32 (<- vielleicht isses des)

    C++

    Zwischen 0 und 2000000000 liegen 98222287 Primzahlen.
    GesamtZeit : 11.89 Millisekunden
    Drücken Sie eine beliebige Taste . . .
    

    (es sind natürlich Sekunden, die Ausgabe ist nicht korrekt)

    Ich hab's auch noch ohne Optimierung nach C# übersetzt:

    Zwischen 0 und 2000000000 liegen 98222287 Primzahlen.
    
    GesamtZeit: 13887 Millisekunden
    
    Drücken Sie eine beliebige Taste . . .
    

    Da sind wir wieder bei unseren 10%. 🙂



  • Xin schrieb:

    mathik schrieb:

    SideWinder schrieb:

    Ich habe mit 19 auch noch Prozessortakte gezählt. Schade, dass das heute keiner mehr macht.

    Ich dachte wenigstens an der FH versuchen sie das einem auszureden. Offenbar nicht, wir leben weiterhin in einer kleinkarierten Programmierwelt. Es geht nämlich gar nicht so sehr um das optimalste Ergebnis für einen kleinen Teil sondern um die Abbildung und Abstraktion eines Gesamtsystems am Computer.

    ich sehe das genauso.

    @manuel87 und @xin
    euch ist schon klar, dass um komplexität beherrschen zu können man immer auf höheren abstraktionen aufsetzen muss?

    und aussagen wie, die programmierer hätten auch in ihren über 500.000 zeilen code takte zählen können um daraus die beste performance rauszukriegen ist einfach realitätsfremd.

    Es ist nicht nur realitätsfremd, vor allem ist es nicht die Aussage, die hier getroffen wurde.

    diese aussage von dir deutet jedoch darauf hin 🙄 :

    Was das Neukompiliern von SQL-Server angeht, so sage ich Dir, dass das vor allem darauf hinweist, dass von den Programmierern, die die ursprüngliche Version von SQL Server 2005 geschrieben, keine mal seinen Verstand beim Programmieren benutzt hat. Wenn man einer Maschine soviel Phantasie einbauen kann, dass sie sich Gedanken darüber machen kann, welcher Fall häufiger eintritt, dann waren die Programmierer ziemlich hohl, weil die sollten das wissen, bevor sie anfangen zu programmieren.



  • Benchmark-Ergebnisse schrieb:

    C++ Gregor: 31 (Änderung: Array auf dem Heap erzeugt, sonst erhalte ich einen Segmentation Fault)
    C++ Volkard: 5,42 👍
    Hast Du Literaturempfehlungen wo man diese Optimierungen nachlesen/verstehen/lernen kann, die Du gemacht hast? Darf auch ruhig englisch sein. 🙂

    keine empfehlungen.
    vielleicht darf ich etwas allgemeines sagen: eigentlich bin ich arbeitslos. nach einem studium, für das ich mir echt zu lang zeit gelassen habe, waren die aussichten, auf einen job als programmierer durchaus schlecht. daran ändert auch ein diplom mit note 1.0 (eine 1 in *jedem* schein, der in die diplomnote eingerechnet wird, also maximalnote) nix. arbeitgeber suchen selten unzuverlässige 95%-hacker. lieber 4 zuverlässige 23%-hacker, sie kennen nämlich den dreisatz. also habe ich mich frei durchgeschlagen. dann tat mir manchmal die maus-hand weh, später die schulter, bald auch ein knie, und kacke wars': chronische polyarthitis (falls man das so schreibt). (ich habe keine probleme, das hier öffentlich bekanntzugeben, ich würde es ja auch jedem arbeitgeber bekanntgeben müssen, um nicht unfair zu sein.) naja, endlich weiß ich, wie sich schüttelfrost anfühlt. war ne fiese zeit. jetzt ist der mist medikamentös eingestellt. habe nach heilung des problems hunderte von bewerbungen verschickt - wenig sinn. die krankheit verdirbt den lebenslauf vollends. habe dann ganz schlicht als nachhilfelehrer wenigstens etwas gefunden, mit dem ich 10Eu/h kriege. es war zwischendurch schlimm. ich wollte sogar für 5Eu/h die nachtwache in einer sicherheitsfirma machen. nur die chefin sagte "informatiker (fi/aw) hatte sie schon zwei, die hatten dann die programme unerlaubterweise verstellt...", tja da kann ich nix machen. habe in der schlimmen zeit zuerst sozialhilfe bezogen und dann dieses komische hartz-IV. kann bezeugen, daß es nicht üppig ist. soabld der nachhilfejob ausreichte, habe ich beim amt gekündigt. nee, vorher schon, aber dieses gerenne aufs amt und betteln war nicht mein ding, die ersten wieder freien monate hatte ich 200Eu weniger, als mir das amt gegeben hätte.
    der job als nachhilfelehrer weitete sich aus, während die anderen lehrer in dem unternehmen regelmäßig in der korrektur von realschul-abschlußprüfungen fehler machen, kann ich sogar die meisten postings von Jester verstehen. gegen Jester bin ich zwar ein dummer tropf, aber gegen meine kollegen bin ich Jester. neulich war mein autochen kaputt. ich meldete telefonisch "bis auf weiteres" mich ab, andere lehrer fallen ja auch aus und oft ohne abmeldung. hat mir ganz gut getan, daß der chef anbot, mich zu kutschieren, weil es keines ersatz gibt.

    und nun zum thema (oder beinahe):
    wie löst man aufgaben? heute hatte ich ein mädel (mathe, 11. schuljahr zum zweiten mal, mathe kritisch, physik negativ), das gar wenig durchblick hat. und sie äußerte, daß mathe zum kotzen ist. und es wurde im unterricht "neuer" stoff angefangen, steigungen und so, das kennt sie aber noch. also für uns eine gelegenheit, statt den neuen stoff zu vertiefen, alte lücken zu füllen. physik. kinematik ist gerade dran. ich frage sie
    "wie groß ist die erdbeschleunigung"
    sie sagt
    "9,81 meter pro sekunde quadrat"
    (ich werde schon hellhörig, wenn jemand "9,81 meter pro sekunde quadrat" statt "9,81 meter pro quadratsekunde" sagt, der auch sonst immer "quadratmeter" statt "meter quadrat" sagt.) Ich frage also
    "Und was bedeutet das?"
    und sie sagt
    "???"(durch achselzucken und "ähh?" begleitet)
    ich frage sie
    "nach einer sekunde, wie schnell ist der stein?"
    sie sagt
    "9,81m/s"
    "nach zwei sekunden, wie schnell ist der stein?"
    sie sagt
    "19,62m/s"
    ich frage auch nach 3, 4, 5 sekunden, bis es ihr langweilig wird und sie eine allgemeine formel angibt (heureka!!!).
    ich verdeutliche das von ihr herausgefundene mit worten wie
    "also pro sekunde wird der stein um 9.81m/s schneller. also er wird schneller um 9.81m/s pro s. also 9.81m/s/s. also 9.81m/(s^2)".
    sie sagt "ach, so einfach ist das?!"
    ich frage
    "ich lasse einen stein in einen tiefen brunnen fallen. er braucht zwei sekunden, bis er unten aufplatscht. wie tief war der brunnen?".
    sie sagt
    "nee, kann ich nicht. den weg nach zwei sekunden, da hab' ich keine formel und kapieren tue ich das auch nicht. ich könnte höchstens rausfinden, wie schnell er wird."
    (wieder heureka, darauf habe ich doch spekuliert)
    "wie schnell ist er denn am ende?"
    sie sagt das richtige zwischenergebnis (ZE).
    "als am anfang war er 0m/s schnell. am ende war er ZE schnell. wie schnell war er denn durchschnittlich?"
    sie tippt in den taschenrechner und findet ZE/2 raus.
    "Und wie tief war der brunnen also?"
    sie tippt und findet das richtige ergebnis raus.
    (patsch, es funktioniert doch auch ohne, daß man die formel s=1/2*a*t^2 hat. )

    sie *glaubt*, daß man irgendwie ohne einsicht die richtige formel finden muß und dann nur noch einsetzen muß. und genau das wird gelehrt von lehrern, die bei 20 oder 25 schülern mit der formel-statt-einsicht-methode die besten durchschnittlichen resultate erzielen. das macht meinen job recht leicht; egal, ob dreisatz, prozenzrechnen, bruchrechnen, binomische formeln, trigonometrie, kurvendiskussion, integrieren, stochasik, ich muß nur die schüler zum einen davon lösen, feste formeln zu benutzen, und zum anderen dazu bringen, auch mal anscheinend unergiebige wege zu fahren, oft klappt's nicht, wie bei jedem profi-mathematiker, aber manchmal klappt's, und ab dann immer öfters.

    Benchmark-Ergebnisse schrieb:

    Hast Du Literaturempfehlungen wo man diese Optimierungen nachlesen/verstehen/lernen kann, die Du gemacht hast? Darf auch ruhig englisch sein. 🙂

    jeder mensch ist anders. und jedes problem ist anders. wenn ich dich kennenlernen würde und dir dann wohlplazierte 25 fragen stellen würde, die es dir erlauben würden, mit eigenen recherchen und ein einigen programmierübungen am ende (nach höchstens einem jahr, in dem du eigenlich nur nebenbei primzahlen erforscht hast, in wirklichkeit aber ganz allgemeine techniken) mehr über primzahlenprogrammierung zu wissen, als ich, dann könnte ich die mitschrift dieser gespräche dennoch schlicht verbrennen, denn für den nächsten schüler taugen sie nicht.

    mir scheint, nachhilfe ist ein durchaus ergiebiges geschäft. ich reiße jetzt möglichst viele stunden und wenn ich 10kEu zusammenhabe, mache ich einen eigenen laden auf (dann aber mit zusätzlichen fächern für die kinder, nicht nur mathe und deutsch und so, sondern auch algorithmenentwicklung(der weg vom problem zum formalen problem), allgemeines weltverständnis(formelfreie naturwissenschaften), faulheit(effizentes zeit- und kraftmanagement) und blah(buzzwording und kampfrhetorik)(ja, man darf und soll auch 6-klässlern erwachsenenthemen zumuten)). mir scheint eh, daß das lehren meine berufung ist und ich nur aus versehen mit rechnern umgehen kann; weil ich für das lehren sowas wie tiefblick (in diffusen informationslagen den kern des problem diagnistizieren) brauche. nee, nicht ganz, tiefblick braucht jeder in seinem fach. keine ahnung, irgendwie finde ich es inzwischen spannender, menschen zu programmieren, als nur rechner.



  • @Volkard: Irgendwie kann ich das nicht verstehen, wieso DU keinen Job als Informatiker findest. Es steht ja wohl außer Frage, dass du enorm viel auf dem Kasten hast. Ich könnte mir vorstellen, dass dich deine momentane Situation deprimiert und ein Teil deiner Niedergeschlagenheit nach außen strahlt und dich deshalb potentielle Arbeitgeber vielleicht schlechter bewerten als du bist.

    Nur so am Rande: Mir ist aufgefallen, dass du einen lebhaften Schreibstil hast. Vor allem ist er an einigen Stellen sogar lustig - ob du solche scherzhaften Stellen bewusst oder unbewusst einbaust ist ja zweitrangig. Dieser gute Schreibstil in Verbindung mit deinem enormen Detailwissen in verschiedenen Bereichen wäre doch die perfekte Grundlage um als Autor Fachbücher zu schreiben. Hast du daran schon mal gedacht? Wäre vllt auch ne gute Beschäftigung, bist du wieder eine feste Anstellung gefunden hast.



  • Da sieht man doch mal wieder, dass es guter Code wichtiger ist als die verwendete Sprache.

    @Jobs: Ich arbeite in einer kleineren Firma und dort wurden alle Angestellten von der selben Person ausgesucht. Einige sind ganz gute Programmierer und andere schlecht. Die Chefs oder Personalbüroarbeiter können in einem Einstellungsgespräch garnicht rausfinden, ob du gut oder schlecht bis. Was sie dazu bewegt jemanden einzustellen ist mir rätselhaft. Genauso wie, dass ich genau _diese_ Stelle bekommen habe und nicht eine von den anderen für die ich mich vorher beworben habe, obwohl ich dachte, dass ich für die einige andere besser geeignet gewesen wäre (es hat sogar das Diplomarbeitsthema gepasst).


  • Mod

    @Volkard: Gratuliere! 👍 🙂 Ich hätte nicht gedacht, dass da noch so viel drin ist. Vielleicht portiere ich deinen Code, so weit es geht, später mal nach Java. Dann haben wir wieder etwas zum Vergleichen. 😃

    ...ich weiß jetzt nicht, wie du darauf kommst, deine berufliche Lebensgeschichte hier zu posten. Aber aus meiner Sicht ist es schon erschreckend, zu sehen, dass man auch mit wirklich guten Noten derartige Probleme hat, einen passenden Job zu finden. Naja, ich habe dein Diplom ja mal gesehen, weil du das hier mal gepostet hattest und das einzige, was mir daran nicht so gut gefiel ist wirklich das Alter, in dem du das Diplom abgeschlossen hattest. Da warst du glaube ich schon 30 oder so. Denkst du, das liegt daran? Ist das Alter bei der Bewerberauswahl ein derartiges KO-Kriterium, dass man einfach durch das Raster fällt, wenn man über einer bestimmten Grenze liegt? ...unabhängig von der Kompetenz? Oder glaubst du, das hat eher andere Gründe? Persönlicher Eindruck oder so? Bist du oft zu Bewerbungsgesprächen eingeladen worden oder bist du meistens schon vorher durch das Raster gefallen? Oder denkst du, dass es in erster Linie an der IT-Krise lag, die damals wohl gerade war. Vielleicht hatte man da insgesamt ganz wenig Chancen. ...aber da müßte es doch langsam auch wieder ein bischen besser aussehen?

    Sorry, falls diese Fragen zu "privat" sind (wenn du die nicht beantworten möchtest, machst du es halt einfach nicht). Aber ich komme langsam aber sicher auch näher an das Ende meiner Studien und muss mich irgendwann irgendwo bewerben. Insofern interessieren mich solche Sachen halt.



  • Gregor
    ******

    Es kommt darauf an was der Arbeitgeber sucht. Das Alter zählt oft als Auswahlkriterium. Wenn der Personalchef dann, immerhin weiterblättert kommt er zur Qualifikation und wenn dort eine 1.0 steht und überall 1.0 dann taucht da die Frage der Überqualifikation und noch diverser anderer Dinge auf, auch bei jungen Leuten. Wenn das nicht stört und man es dann letztendlich vielleicht doch zum Bewerbungsgespräch schafft wird herausgefunden ob sich der Bewerber überhaupt für die Firma und das Umfeld eignet in dem er zu arbeiten hat, kurzum ob der Bewerber in das vorhande Arbeitsklima passt.



  • TheTester schrieb:

    Gregor
    ******

    Es kommt darauf an was der Arbeitgeber sucht. Das Alter zählt oft als Auswahlkriterium. Wenn der Personalchef dann, immerhin weiterblättert kommt er zur Qualifikation und wenn dort eine 1.0 steht und überall 1.0 dann taucht da die Frage der Überqualifikation und noch diverser anderer Dinge auf, auch bei jungen Leuten. Wenn das nicht stört und man es dann letztendlich vielleicht doch zum Bewerbungsgespräch schafft wird herausgefunden ob sich der Bewerber überhaupt für die Firma und das Umfeld eignet in dem er zu arbeiten hat, kurzum ob der Bewerber in das vorhande Arbeitsklima passt.

    Ja, das ist die offizielle Version. 😃 Mir ist das genaue Verfahren schon ziemlich schleierhaft. Wenn ich auf der Suche nach einem Praktikumplatz bin nehmen mich immer die Firmen, wo ich denke, dass das Vorstellungsgespräch echt schlecht gelaufen ist.



  • Optimizer schrieb:

    Ja, das ist die offizielle Version. 😃 Mir ist das genaue Verfahren schon ziemlich schleierhaft. Wenn ich auf der Suche nach einem Praktikumplatz bin nehmen mich immer die Firmen, wo ich denke, dass das Vorstellungsgespräch echt schlecht gelaufen ist.

    Vielleicht suchten sie einfach nur nach einer günstigen Arbeitskraft und der Rest war ihnen egal. 😃

    Jedenfalls, gibt es kein genaues Verfahren, das ist alles recht subjektiv. Bei einem meiner Praktika, wurden teilweise Führungskräfte aus der jeweiligen
    Abteilung hinzugezogen um zu schauen ob der Bewerber gewisse von Ihnen festgelegte Kriterien erfüllt.

    Es sollte nicht vergessen werden das man dann dort nicht für sich alleine in einem stillen Kämmerchen arbeitet, dass dort auch nur Menschen sitzen und Führungskräfte auch Angst um ihren Job haben. Überdies sind Personalentscheidungen nicht gerade günstig, was vorallem bei kleineren Unternehmen ins Gewicht fällt.

    Am Ende ist und bleibt es eine vage Sache für einen Selbst, man kann es nur versuchen wenn es nicht klappt weiter versuchen. Und wenn es dann überhaupt nicht funktioniert, hoffen das einen DIE Idee ereilt oder ein Unternehmen gründen oder im Ausland bewerben! etc. oder als allerletzte Möglichkeit Börsensoftware schreiben. 😉


  • Mod

    TheTester schrieb:

    Es kommt darauf an was der Arbeitgeber sucht. Das Alter zählt oft als Auswahlkriterium. Wenn der Personalchef dann, immerhin weiterblättert kommt er zur Qualifikation und wenn dort eine 1.0 steht und überall 1.0 dann taucht da die Frage der Überqualifikation und noch diverser anderer Dinge auf, auch bei jungen Leuten. Wenn das nicht stört und man es dann letztendlich vielleicht doch zum Bewerbungsgespräch schafft wird herausgefunden ob sich der Bewerber überhaupt für die Firma und das Umfeld eignet in dem er zu arbeiten hat, kurzum ob der Bewerber in das vorhande Arbeitsklima passt.

    Mir ist schon klar, dass das Alter meistens auch ein Faktor bei der Bewertung eines Bewerbes ist. Die Frage ist nur, ob es tatsächlich oft ein totales KO-Kriterium ist. In der Art "Wenn der Bewerber zu alt ist, dann interessiert der Rest erst gar nicht". Aber ich glaube auch, dass das tatsächlich so ist. ...spricht eigentlich dafür, dass es weiterhin ein absolutes Überangebot an Bewerbern gibt.

    Die Argumentation mit der Überqualifikation und der Angst der Führungskräfte um ihren eigenen Job finde ich immer etwas komisch. Was ist denn das für eine Logik?



  • Noch nie jmd überqualifiziertes für einen Job gesehen? Mögliche Fragen die sich dann der Personalchef stellen könnte ist, was kann ich so jmdem bieten, ist er mit der Arbeit überhaupt ausgefüllt, wie lange wir er bleiben wenn er nicht ausgefüllt ist (Kosten!). Haben wir überhaupt Aufstiegsmöglichkeiten für so jmden etc.

    Und wenn es darum geht jmden für den eigenen Bereich einzustellen, könnten mögliche Fragen sein: Ist er besser als ich? Wie agressiv is das Aufstiegsverhalten etc. pp.

    Und auch wenn du das nicht glaubst so ein Denken ist sehr verbreitet wobei erstere s noch verständlich scheint. Letzteres hingegen ist oft unsinnig aber menschlich.



  • TheTester schrieb:

    Steuerkl. I - Offizieller Sponsor der BRD

    rofl. 😃 👍



  • Gregor schrieb:

    Naja, ich habe dein Diplom ja mal gesehen, weil du das hier mal gepostet hattest und das einzige, was mir daran nicht so gut gefiel ist wirklich das Alter, in dem du das Diplom abgeschlossen hattest. Da warst du glaube ich schon 30 oder so. Denkst du, das liegt daran? Ist das Alter bei der Bewerberauswahl ein derartiges KO-Kriterium, dass man einfach durch das Raster fällt, wenn man über einer bestimmten Grenze liegt?

    das alter ist schon schrecklich. wer älter als 30 ist, ist zu alt, was zu lernen, so die herrschende meinung. ist nicht mehr formbar. daß ich nie sonderlich formbar war, tut wenig zur sache (soll nicht heißen, daß ich nicht anpassungsfähig wäre). es springen viele informatiker rum, die über 40 sind und noch pascal, fortran oder c machen und keinen schimmer von OOP haben. aber sie schreiben natürlich in den bewerbungen, sie wären OOP-total-auskenner. ich als chef wäre bei älteren bewerbern auch erstmal ganz vorsichtig.

    ...unabhängig von der Kompetenz?

    die kompetenz kann keiner einschätzen. ich war mal bei einem bewerbungsgespräch, wo der programmierleiter ein junger mann ohne jede theoretische ausbildung war. er veranstaltete einen test. ganz "realitätsnah" hat er auf nem rechner nen server ausgemacht (nen dienst deinstaliert) und sagte "stellen sie sich vor, der kunde ruft an und sagt 'das geht nicht mehr', reparieren sie mal" (habs recht schnell gefunden). ich bin jetzt schon recht lange im geschäft, aber daß kunden server ausmachen, ist mir wirklich neu. dann fragte er nach sql. ich sagte unter anderem "ich hab ein forum in php gebaut". er fragte konkrete sql-befehle. ich sagte "brauche handbuch, quellen oder google". hat er nicht toleriert. und er war nicht begeistert davon, daß ich ein forum "aus fremden quellen nur zusammenkopiert" hatte. dann fragte er nach qb, irgend einen dialog machen und elemente zur laufzeit plazieren, ich wußte nicht auswendig, wie die properties heißen, die die position und größe eines gui-objekts bestimmen. daß ich bei der berechnung der breiten selbstverständlich den rundungsfehler kenne und durch knopfbrteite=int((gesamtbreite-abstandbreite)/2) und dann erst berechnen von positionen vom rand aus bewußt dafür sorgte, daß im zweifelsfall der abstand ein pixel größer wird und beide knöpfe gleich breit werden, hat er gar nicht bemerkt. ich sagte "dann lese ich mir die liste aller properties durch und finde das richtige schon" er sagte "aber beim kunden ist keine zeit dafür, sowas muß man einfach wissen". naja, hier weiß ich, warum ich den job nicht bekommen habe. und es war gut so. den ärmsten hätte ich in der tat aus seiner position müssen, um sinnvoll arbeiten zu können, und sowas mache ich ungern.
    bei 95% der vorstellungsgespräche war gar kein techniker anwesend, der irgendwas in sachen kompetenz hätte messen können.

    Oder glaubst du, das hat eher andere Gründe? Persönlicher Eindruck oder so?

    ich trat da immer gepflegt auf, frisch nach frisörbesuch, glattrasiert, gebügeltes hemd und so. ich weiß auch, wem man in welcher reihenfolge die hand schüttelt und wie man in gesellschaft tomatensuppe ißt.
    trotzdem ist es irgendwie so, daß mich fremde leute immer unsympatisch und dumm finden, der eindruck ändert sich dann mit der zeit, in der sie mit mir zu tun haben.

    Bist du oft zu Bewerbungsgesprächen eingeladen worden oder bist du meistens schon vorher durch das Raster gefallen?

    50% der sinnvollen bewerbungen gaben einladungen. für's amt mußte ich zeitweise auch quatschbewerbungen (zum beispiel beim frisör um die ecke) machen. hab dann aufgehört, quer durch deutschland zu fahren, um einer von 50 leuten zu sein, die angeguckt werden, dazu reichte die kohle wirklich nicht. amt erstattet theoretisch manchmal, wenn man vorher beantragt, was bei den seltsamen öffnungszeiten und kurzfristigen terminvereinbarungen dann doch nie klappte. auf fragen wie "erstatten sie mir die fahrtkosten?" an das einladende unternehmen kam immer "nein". und gegen ende meiner bewerbungsversuche bin ich auch nicht mehr losgefahren, wenn keine fahrtkosten drin waren. die hätten damit wenigsten ein wenig ernsthaftes interesse bekundet.

    Oder denkst du, dass es in erster Linie an der IT-Krise lag, die damals wohl gerade war.

    das auf jeden fall. und das lange studium. und daß ich keine praxiserfahrung nachweisen kann (nur selbständige arbeit). und daß ich mich aus arbeitslosigkeit heraus beworben hatte (muß ja einen grund haben, daß der penner arbeitslos ist). und daß es nur ein fh-diplom ist.

    Vielleicht hatte man da insgesamt ganz wenig Chancen. ...aber da müßte es doch langsam auch wieder ein bischen besser aussehen?

    ja, sieht schon besser aus. aber für mich schlechter, weil ich noch länger aus dem beruf raus bin.
    ist mir aber inzwischen egal. ich denke, es ist ein sinnvoller plan, daß ich anstrebe, ein nachhilfeinstitut (und später mehrere) zu eröffnen.

    Sorry, falls diese Fragen zu "privat" sind (wenn du die nicht beantworten möchtest, machst du es halt einfach nicht).

    mir ist kaum was peinlich. ich weiß, wer und was ich bin, und die trolle, die jetzt bessere munition haben, mich zu beleidigen, erwarte ich voller spannung.

    Aber ich komme langsam aber sicher auch näher an das Ende meiner Studien und muss mich irgendwann irgendwo bewerben. Insofern interessieren mich solche Sachen halt.

    noten sagen gar nicht so viel aus. mehr als die hälfte der informatik-diplom-inhaber können "1.5 hühner legen in 1.5 tagen 1.5 eier. wieviele eier legt ein huhn pro tag" nicht lösen. bau dir einen guten lebenslauf.

    @Volkard: Gratuliere! Ich hätte nicht gedacht, dass da noch so viel drin ist. Vielleicht portiere ich deinen Code, so weit es geht, später mal nach Java. Dann haben wir wieder etwas zum Vergleichen.

    wird wieder 10% machen. bei direktem protieren vielleicht ein wenig mehr, weil java gerne funktionsaufrufe bestraft und nicht so aggressiv inlined.
    ihr habt aber schnelle rechner. meiner braucht 123 sekunden. wenn ich assembler in die findFirstFalse einbaue, sinkt es auf 120 sekunden. aber mit

    inline void setBitTrue(u32 *data,u32 pos)
    {
    	__asm	mov		ebx,dword ptr[data];
    	__asm	mov		eax,dword ptr[pos];
    	__asm	bts		[ebx],eax;
    }
    

    steigt die zeit auf 354 sekunden. ganz schlechter prozessor, würde ich mal sagen. 🕶 kann bts so lahm sein?



  • Gregor schrieb:

    Mir ist schon klar, dass das Alter meistens auch ein Faktor bei der Bewertung eines Bewerbes ist. Die Frage ist nur, ob es tatsächlich oft ein totales KO-Kriterium ist.

    Sicher kein KO-Kriterium, aber es wird natürlich eng ab einem gewissen Alter wenn man keine Berufserfahrung mitbringt.
    Aufgrund meines noch nicht ganz so fortgeschrittenen Alters kann ich da wenig aus eigener Erfahrung beitragen, aber neulich meinte jemand von der EADS, der einen Vortrag zu dem Thema "Studienrichtung und Beruf" an der Uni gehalten hat, dass man schon einen sehr guten Grund braucht, wenn man sich für ein Studium länger als Regelstudienzeit und ein paar wenige Puffer-Semester Zeit lässt. Auch hat derjenige aus eigener Erfahrung berichtet, dass er manche Sachen einfach irgendwie beenden muss, obwohl er gerne noch ein bißchen dran weitertüftelt hätte. Sowas lässt sich einer "Hackerseele" ab einem gewissen Alter auch nicht so einfach angewöhnen, denke ich.


  • Mod

    volkard schrieb:

    wird wieder 10% machen. bei direktem protieren vielleicht ein wenig mehr, weil java gerne funktionsaufrufe bestraft und nicht so aggressiv inlined.
    ihr habt aber schnelle rechner. meiner braucht 123 sekunden.

    1. Bei mir ist es ein P-M mit 1,83GHz. Also noch relativ neu.

    2. Es gibt bei der JVM von Sun einen versteckten Schalter "-XX:+AggressiveOpts". Es kann sein, dass der bezüglich des aggressiven Inlinings einiges bringt. Müsste man mal ausprobieren. Bei meiner Lösung da oben macht der Schalter allerdings keinen Unterschied. Sooo viele Optimierungen sind da aus Sicht des Compilers/der JVM wahrscheinlich nicht drin, vermute ich einfach mal.

    3. Naja, Codestücke, die sich mehr oder weniger direkt portieren lassen, verhalten sich wahrscheinlich auch mehr oder weniger gleich. Da wird man dann keinen großen Unterschied feststellen. Interessant wird es wohl erst da, wo das nicht mehr möglich ist oder wo bestimmte charakteristiken der Programmiersprachen und der darunterliegenden Kompilate sichtbar werden. Aber wenn man soetwas vergleicht, wird man wahrscheinlich zu noch sinnloseren Vergleichsergebnissen kommen als bei diesem Benchmark.



  • volkard schrieb:

    das auf jeden fall. und das lange studium. und daß ich keine praxiserfahrung nachweisen kann (nur selbständige arbeit). und daß ich mich aus arbeitslosigkeit heraus beworben hatte (muß ja einen grund haben, daß der penner arbeitslos ist). und daß es nur ein fh-diplom ist.

    Ist Praxiserfahrung denn echt so wichtig? Und was meinst du mit nur ein FH-Diplom? AFAIK wird es doch im Vergleich zur Uni fast gleichwertig angesehen, oder nicht? Ich mein, was soll ich dann als zukünftiger BA Abgänger sagen? Das wär ja dann noch ne Schublade tiefer...



  • GPC schrieb:

    Und was meinst du mit nur ein FH-Diplom? AFAIK wird es doch im Vergleich zur Uni fast gleichwertig angesehen, oder nicht?

    nö. dieses märchen erzählen einem nur dauernd die fh-profs und fh-diplom-inhaber. der lehrstoff ist seichter, die organisation ist weniger unfair, das studium ist kürzer, alles weniger schwierig und damit ist der nachweis, es geschafft zu haben, weniger wert.


Anmelden zum Antworten