[Talk-de] JOSM-Geschwindigkeit

Peter Vitt peter at dotnetphen.com
Di Dez 23 23:28:27 UTC 2008


Florian Lohoff schrieb:
> On Tue, Dec 23, 2008 at 08:07:33PM +0100, Peter Vitt wrote:
>   
> Du meinst so wie bei Java? Vorraussetzung ist und bleibt das der
> Programmierer portabilität das als ziel hat und konsequent umsetzt -
> Pfadtrenner zum beispiel - Windows "\" - Unixe "/" - MacOS ":" - Fragen?
>   
> Es gibt triviale dinge die mit einem mal nicht mehr funktionieren. 
>
>   
System.IO.Path.PathSeperator liefert auf jeder Umgebung, auf der eine
.NET-Anwendung läuft, den richtigen Pfadtrenner. Fragen?
> 2 Moeglichkeiten - Virtual Machine - Oder Just in Time compiler - Wann
> findet nochmal das "Just in time" statt? Ach ja - Zur Laufzeit.
>   
Korrekt. Wo ist der Punkt?
> Und das mit dem Garbage Collection ist nunmal unnoetiger overhead. Ja -
> der faule 
streiche faule, setze produktive
> programmierer muss sich nicht drum kuemmern weil der GC ja
> einfach den gesamten prozess addressraum 
Streiche gesamten Adressraum, setze referenzierbarer Objektbaum
(jedenfalls in C#), Rest ist garbage,
> durchsucht nach irgendwelchen
> pointern die moeglicherweise noch eine reference darstellen.
>
> Warum kann der programmierer nicht explizit den speicher freigeben 
Muss er das, wenn er den Speicher nicht braucht? Er kann seinen Müll
entsorgen, und wenn er den Platz braucht, dann wird der Speicher
freigegeben. Die Rechenzeit muss so oder so aufgewendet werden.
> wenn
> er nicht mehr benoetig wird? Ach ja - ich vergass - uebersicht verloren
> ...  schlechte doku ... undefinierte lifecycles ...
>   
Oder einfach nur der Wille, produktiv zu sein und sich nicht ewig an
eine schon sehr lange vorhandenen Sprache zu binden.
> Ich lasse keine Hasstiraden los sondern es geht um Performance und als
> erstes wird C# erwaehnt - und ich frage mich warum performancekritische
> applikationen nicht in C# oder Java programmiert sind - libc, kernel
> oder gleich der CPU microcode?
>   
Siehe Singularity, ein OS komplett im managed Code. Siehe .NET Micro
Framework, ein 200k großes Framework, das bare metal auf einem
Microcontroller läuft und die Nutzung von Treibern im managed Code erlaubt.
> Wenn ich performanten code schreibe dann vermeide ich schon ein malloc
> und greife auf einen slab allocator zurueck - und hier wird performanter
> code im zusammenhang mit virtual machines, jit, intermediate code etc
> erwaehnt. Da sind mindestens 2-3 abstraktionsebenen dazwischen die ihr
> häppchen cpu cycles brauchen.
>   
Hmmm, warum schreibst du eigentlich keinen Assembler? Da hast du dann
alles unter Kontrolle und absolut keine Abstraktionsschichten dazwischen.
>
> Es geht mir auf den zwirn staendig applikationen in Java und C#
> vorgesetzt zu bekommen die erstmal sich die haelfte des speichers
> schnappen, 10 Minuten fuer den Startup brauchen und dann von den
> Entwicklern als performant verkauft werden.
>   
Was hat Speicher mit performant zu tun? Stört es dich, dass dein
Speicher, den du in deinen Rechner gebaut hast, auch noch benutzt wird?
Hast du wirklich nur 80 MB Speicher? Und ich kann auch eine C-Anwendung
schreiben, die 10 Minten zum Starten braucht. Mir geht es auf den Zwirn,
dass in größeren Communities ständig einer das kaputt redet, was ein
anderer macht.
> Wenn ich nur Java und C# hoere dann stecken dahinter allzuoft
> Programmierer die voellig den Kontakt zu der eigentlich ausfuehrenden
> Einheit - der CPU - verloren haben. 
Wenn ich Autofahrer höre, stecken da auch meistens Menschen hinter, die
völlig den Kontakt zur Zylinderkopfdichtung verloren haben. Ist es nicht
wichtig, von A nach B zu kommen? Sowohl mit dem Auto als auch mit einer
Programmiersprache?
> Wie aus der einen C# anweisung dann
> 400 instructions mit 600 cycles wurde kann dann keiner mehr erklaeren.
>   
Dafür wurde C# ja auch geschrieben. Damit man mit einer Anweisung das
macht, was der C-Entwickler in 400 Anweisungen machen muss. Sowas nennt
man Fortschritt.
> Dann wird noch ein wenig portabilitaetsgefasel vom Stapel gelassen das
> ja unbedingt Java 
oder C# oder eine beliebige andere Sprache, wie du ja selbst angemerkt hast
> erfordert um dann gleich im naechsten halbsatz zu
> erwaehnen welches patchlevel welcher exakten jre auf welchem
> Betriebssystem man jetzt braucht damit es auch wirklich funktioniert.
>   
Verdammt aber auch. Es steht sogar auf jeder Topfblume, ob sie in der
Sonne oder im Schatten stehen muss. Warum kann man die nicht überall
hinstellen. Gibt es keine portablen Topfblumen?
> Ist ja auch egal - Die naechste CPU generation mit der doppelten
> Frequenz und dem doppelten 2nd level cache steht ja schon vor der Tuer.
>   
Fortschritt bleibt Fortschritt.
> Es mag sein das C# und Java die Einstiegshürde ins Programmieren senkt,
> aber sie machen es zu einfach sich in den Fuss zu schiessen. Ja - man
> kann sich mit vielen Sprachen in den Fuss schiessen aber je high-level
> desto einfach. 
>
>   
Warum schreibst du eigentlich mit einem Computer eine E-Mail und
schickst keine Briefpost?
> Flo
>   
Ahhh, mich regt sowas auf. Ich werde mich jetzt aus dieser Diskussion
zurückziehen und wünsche allen eine frohes und gesegnetes Weihnachtsfest
und für das nächste Jahr eine konstruktive Zusammenarbeit,
Peter





Mehr Informationen über die Mailingliste Talk-de