| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
James N800-Freak
Anmeldedatum: 02.05.2008 Beiträge: 137
|
Verfasst am: 30.01.2010, 18:49 Titel: Wieso gibt's keine Distri die auf wenig RAM spezialisiert is |
|
|
Ich finde das das N810 mit nur 128 MB RAM sehr wenig Speicher hat und dementsprechend fühlt es sich auch beim surfen an, wenn der Browser selbst unmengen an Speicher braucht.
Daher frage ich mich, welchen Sinn es macht die ganzen vielen kleinen Programme auf Python und ähnlichem laufen zu lassen bzw. darin zu realisieren.
Das ist zwar für die Entwickler bequem und schnell, aber wenn das Ergebnis eine Anwendung ist, die nur wie ne lahme Krücke läuft und sich das ganze bei vielen Anwendungen, die man gleichzeitig geöffnet haben will, aufsummiert, dann
hätte man es IMO besser auch gleich bleiben lassen können so ein Programm zu schreiben.
Python ist z.B. eine Scriptsprache und damit die Programme laufen muß der Interpreter laufen. Das frißt alles Speicherplatz im RAM und die Ausführungsgeschwindigkeit geht auch deutlich in die Knie.
Auf einem modernen PC stört das nicht und Python ist dort eine tolle Sache, aber auf dem schwachen Gerät sieht es anders aus.
Würde man die ganze Software in C oder C++ oder vielleicht auch in D realisieren (sofern es für D überhaupt einen ARM Compiler gibt), insbesondere mit einem sehr schlanken GUI Toolkit, dann könnte ich mir gut vorstellen, daß man damit deutlich an Performance gewinnen würde.
Auch GTK+ oder Qt ist IMO nicht das wahre, denn seine Themingfähigkeit ist zwar nett, aber die frißt doch auch sicher wieder Performance.
Wenn ich an früher zurückdenke.
Wo ein OS/2 oder Windows 9x sich mit 8-16 MB RAM und einem etwa gleich schnellen Rechner (Omap 2420 entspricht ca. Pentium 166 MHz) begnügen mußte und dort alles mögliche vom Officeprogramm bis zum Browser lief, dann ist das Ergebnis was Maemo auf einem Rechner mit 128 MB RAM heute liefert eher enttäuschend.
Ich würde mir daher wünschen, wenn es eine Distribution oder ein Projekt geben würde, das sich sehr stark darauf spezalisiert Resourcenschonend und Performant zu sein.
Die Frage an euch ist jetzt, inwiefern sich das realisieren lassen würde
und inwiefern das Sinn macht.
Man muß ja jetzt nicht alles neu schreiben.
Man kann z.B. durchaus weiterhin einen Linuxkernel und die GNU Tools (inkl. Bash, auch wenn die Ausnahmsweise mehr RAM als die Busybox braucht, ist hier mir die Funktionalität wichtiger) einsetzen, aber beim ganzen Rest.
Der grafischen Oberfläche, der GUI Bibliothek und der Anwendungssoftware könnte man doch durchaus mal darüber nachdenken, alles neu zu schreiben.
Einige wenige Dinge könnte man ja aus bestehendem Code übernehmen und sich damit die Arbeit etwas vereinfachen.
So könnte man z.B. für einen Browser den Renderingcode von khtml nehmen.
Diese HTML Engine ist ja recht effizient und schnell.
Aber andere Programme, wie Adress- und E-Mailverwaltung, Texteditor usw. das kann man auch durchaus alles neu schreiben.
Und bezügl. der Bibliotheken kann man ja durchaus das eine oder andere Wiederverwenden, nur sollte man hier die Auswahl stark auf das nötigste Einschränken und damit zum Ziel kommen.
Einen fetten X Server brauche ich auf dem N810 auch nicht unbedingt
und ich kann mir auch gut vorstellen, daß man auch genausogut so etwas wie VNC auf dem N810 realisieren könnte, wenn man denn unbedingt von seinem normalen PC grafisch auf das N810 zugreifen möchte.
Denn leichter und schneller Implementierbar ist so etwas wie VNC bestimmt.
Lediglich der Zugriff auf den Grafikkern dürfte deutlich aufwendiger sein, denn der Framebuffermodus von Linux allein nutzt AFAIK ja keine 2d Beschleunigerfunktionen des Grafikchips (davon ausgehend, daß dieser solche Funktionen überhaupt besitzt).
Vielleicht könnte man aber auch ein ganz anderes OS einsetzen.
Z.B: Haiku. Der Vorteil wäre, daß es schon eine schlanke grafische Oberfläche besitzt. Man müßte halt nur die Software, wie Buttons, Fenster usw. dem kleinen N810 Display anpassen und dafür explizite Software schreiben, so daß man nicht mit der normalen Haiku PC Software ins Gehege kommt.
Ein weiterer Nachteil wäre bei einem anderen OS nur, daß man alle Treiber für die N810 Hardware selber neu schreiben müßte.
Aber das ist jetzt nur eine Idee, der Linuxkernel selbst ist ja recht effizient und sparsam, nur gilt das halt nicht für die verfügbaren grafischen Oberflächen die es dort so gibt.
Was denkt ihr dazu?
Was könnte man hier alles machen, was kommt in Frage?
Oder seht ihr das eher so, daß die Entwicklung rausgeschmissene Zeit wäre,
weil man in 3-5 Jahren eh sicher einen Internet Tablet Nachfolger mit 1 GB RAM und mehr kaufen kann?
Und falls man nicht so drastische Schritte gehen möchte,
dann kann man sich ja immer noch auf wenige Bibliotheken beschränken und
fette Python Anwendungen durch effziente C/C++ Anwendungen ersetzen.
D.h. man könnte z.b. bei einem X Server bleiben und als GUI Toolkit z.B. nur GTK+ nehmen und nichts anderes (also auch kein QT) und davon aber nur die bald erscheinende Version 3.0. Denn dort werden viele unnötige Dinge die Obsolete geworden sind, rausgeschmissen, mit dem Ergebnis, daß die Bibliothek schlanker ist.
Qt sollte man dabei deswegen weglassen, da zwei Bibliotheken nur dazu führen würden, daß man mehr in den Speicher laden muß.
Natürlich könnte man auch anstatt GTK+ 3.0 auch einfach nur Qt wählen, aber das sehe ich problematisch, da Qt z.B. überwiegend nur dafür gedacht ist, daß man damit in C++ programmiert.
Ich glaube nämlich nicht, daß es dafür gute C Bindings gibt.
Bei GTK+ 3.0 sieht das besser aus.
Hier kann man direkt in C schreiben und wenn man C++ will, dann gibt es hier das C++ Binding gtkMM, das inzwischen auch sehr ausgereift ist. |
|
| Nach oben |
|
|
thopiekar Alter N800-Hase
Anmeldedatum: 04.11.2007 Beiträge: 553 Wohnort: Solingen
|
Verfasst am: 09.02.2010, 15:49 Titel: |
|
|
egal ob bei Python oder C/C++ - meiner Meinung nach alle eine Frage der Programmierkunst!
auch unter Python kannst du Funktionen erstellen die mit global'en Variablen um gehen oder dein Programm so optimieren, dass es die Werte sofort löscht wenn nicht mehr nötig oder alles in eine Funktion reinpakst ohne das der Interpreter nach einem Wunsch etwas zwischenspeichert..
Und vergessen wir nicht, dass es auch hier auf den Toolkit ankommt, denn du für den UI nutzt!
Was definitiv abgeht ist E (genutzt z.B. vom Desktop: E17 und Canola )!
Warum ich nie in C/C++ programmiere ist, dass ich die Anwendungen die ich schreibe auch auf anderen OS'S laufen sollen..
http://www.enlightenment.org/
Problem bei E ist es läuft nicht unter Windows oder Mac, daher benutze ich das Toolkit nicht sondern Qt4 (PyQt4)..
Das Problem ist eigentlich, dass vorallem Webinhalte immer mehr RAM brauchen (youtube in HD), was damit zusammenhängt, dass Entwickler sich denken: Warum RAM sparen, wenn mein Rechner und die des Normal-Nutzers also mit PC auch ausreichend Leistung hat.
Und die Browser Engine webkit wird auch im Moment immer kleiner also vom Code..
.. und das Problem sind nicht die Treiber sondern die Tatsache das die Treiber Closed-Source sind und auf neueren Kernels nicht viel taugen..
.. ps: soweit ich weiß werden die meisten Bindings durch C++ Code erstellt also meist sogar gleiche Klassen und Funktionen..
grußß
grußß |
|
| Nach oben |
|
|
James N800-Freak
Anmeldedatum: 02.05.2008 Beiträge: 137
|
Verfasst am: 16.02.2010, 01:22 Titel: |
|
|
| thopiekar hat Folgendes geschrieben: |
auch unter Python kannst du Funktionen erstellen die mit global'en Variablen um gehen
|
Das ist ja schlecht.
Globale Varibalen bedeutet, daß es schlecht programmiert wurde.
| Zitat: |
oder dein Programm so optimieren, dass es die Werte sofort löscht wenn nicht mehr nötig oder alles in eine Funktion reinpakst ohne das der Interpreter nach einem Wunsch etwas zwischenspeichert..
|
Das meinte ich gar nicht.
Was ich meinte ist das der Python Interpreter allein schon > 6,3 MB RAM im Arbeitsspeicher benötigt und ein Interpreter immer langsamer ist als Binärer Code.
Selbst wenn der Interpreter über einen JIT Compiler verfügt ist die Startzeit der Anwendung schlechter und der RAM Bedarf bleibt weiterhin hoch.
Bei C/C++ ist das nicht so.
Die Startzeit ist ausgezeichnet, da nichts interpretiert werden muß und das Binary schon in Maschinensprache vorliegt.
Auch ist kein Interpreter im Hintergrund nötig, der nur Platz frißt.
Und die Speicherverwaltung kann bei C/C++ auch viel effizienter umgesetzt werden als bei einem Interpreter, da C/C++ eine Programmiersprache ist, die für die Systemprogrammierung geeignet ist.
D.h. man hat nahezu volle Kontrolle über die HW und man kann sogar Inline Assembler Befehle einbauen und bestimmte Routinen noch effizienter für einen speziellen Fall machen.
All das geht bei einem Interpreter nicht, da muß man das nehmen, was der Interpreter einem maximal ermöglicht.
> Und vergessen wir nicht, dass es auch hier auf den Toolkit ankommt, denn du für den UI nutzt!
Ein schnelles effizientes GUI Toolkit ist sowieso in einer effizienten Programmiersprache geschrieben, bei Verwendung eines Interpreters braucht man also auch noch extra Bindings für das GUI Toolkit, die dann wieder extra Speicherplatz verbrauchen.
| Zitat: |
Was definitiv abgeht ist E (genutzt z.B. vom Desktop: E17 und Canola )!
|
Laut WP baut E auf Java auf, damit braucht es eine JRE und somit wieder nen Haufen Speicherplatz.
| Zitat: |
Warum ich nie in C/C++ programmiere ist, dass ich die Anwendungen die ich schreibe auch auf anderen OS'S laufen sollen..
|
Das geht doch mit C/C++.
Du mußt den Code für die jeweilige Plattform halt nur noch einmal compilieren.
Denn die Binarys von C/C++ Anwendungen liegen ja in Maschinencode vor.
| Zitat: |
Problem bei E ist es läuft nicht unter Windows oder Mac, daher benutze ich das Toolkit nicht sondern Qt4 (PyQt4)..
|
Ja, und weil du das Python Binding für Qt4 verwendest brauchst du auch mehr RAM.
Würdest du Qt4 direkt mit C++ verwenden, dann würdest du Arbeitsspeicher einsparen.
| Zitat: |
Das Problem ist eigentlich, dass vorallem Webinhalte immer mehr RAM brauchen (youtube in HD), was damit zusammenhängt, dass Entwickler sich denken: Warum RAM sparen, wenn mein Rechner und die des Normal-Nutzers also mit PC auch ausreichend Leistung hat.
|
youtube in HD ist eine Frage der Rechenleistung, nicht des Speicherplatzes.
Man braucht halt eine effiziente Abspielsoftware die auf die ARM Architektur des N8x0 optimiert ist, wobei ein N8x0 aber sowieso mit HD Content von der Leistung her überfordert ist.
Dazu kommt noch, das Flashplugin ist leider nicht für die ARM Architektur optimiert und es braucht leider auch selbst sehr viel Platz im RAM.
Eventuell schafft hier ja HTML5 Abhilfe, daß sein eigenes TAG für Videos mitliefert, so daß der Browser das auch gleich direkt unterstützen kann und man auf Flash verzichten kann. Youtube hat ja schon angekündigt, daß sie dieses Feature nutzen werden.
Aber prinzipiel hast du schon Recht, Webinhalte wie diverse Flashbasierte Gimicks die die Seite verschönern sollen, fressen ungemein viel RAM und Rechenleistung.
Auch achten viele Leute nicht mehr darauf, die Bilder auf ihrer Webseite so zu speichern, daß sie wenig Platz benötigen. |
|
| Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|