2009-06-30 13 views
3

Etwas, das ich über jede iPhone-App, die ich ausprobiert habe, bemerkt habe, ist, dass sie alle Orte haben, an denen sie sehr langsam und unempfänglich erscheinen. Das gilt für die Spiele, die kostenlosen Apps, die preiswerten, beliebten, "professionellen" Apps und sogar für einige integrierte Apple-Apps. Sie alle scheinen Orte zu haben, an denen sie viele Sekunden oder sogar eine Minute brauchen, um auf Bildschirmberührungen zu reagieren; baden und zeigen einen sich drehenden Beachball für Sekunden auf einmal; "queue up" -Input, so dass ein Tastendruck nur ignoriert wird, um tatsächlich zehn Sekunden später etwas zu tun, wie bei einem schlecht gemachten DVR; und sperren Sie so lange, dass der OS Watchdog sie nur tötet.Warum sind iPhone Apps so langsam?

Da diese Perf-Probleme so weit verbreitet sind, scheint es mir, dass es einige allgemeine Performance-Fallstricke geben muss, einige System-Probleme, die für viele verschiedene Leute immer wieder auftauchen. Ich bin selbst kein iPhone-Entwickler, also frage ich die Meinungen der Community:

Was sind die häufigsten Leistungsfehler auf dem iPhone?

Oder, Welche menschlichen Faktoren der iPhone-Entwicklung machen es zu einfach, mit schlechter Leistung zu versenden?

Antwort

2

Speicherverwaltung ist a bit of a beast.

Aber ich denke, das größte Problem ist das: Wie lange können Sie es sich leisten, ein Produkt zu polieren, das für 99 Cent verkauft wird und mit Zehntausenden anderen Apps konkurrieren kann und ein unbekanntes Umsatzpotenzial in einem sich schnell verändernden Markt hat?

Das iPhone ist ein großes kleines Gerät, aber die Konkurrenz für Mindshare ist heftig und teuer.

+0

Wow, was für eine großartige Verbindung zu einer schockierenden Offenbarung. Vielen Dank! – Crashworks

+1

Schauen Sie sich einfach an, wie viele der iPhone-Fragen hier auf Stackoverflow dazu dienen, Speicherlecks zu finden. Es dauert eine Weile, bis C- und C++ - Programmierer das Ziel von Objective-C erreichen (eine Menge Kakao zum lernen, meistens - die Sprache ist nicht so groß). Und ich wette, dass viele Programmierer die Garbage-Collection verwenden. – Nosredna

+0

Nun, C/C++ ist nicht HTML ... oder Java ... Entwickler können nicht überleben, ohne einige Grundlagen des Umgangs mit Speicher zu kennen, Geräte haben eine endliche Menge an Ressourcen, sei es CPU, RAM oder Akkulaufzeit ... – stefanB

1

Ich denke, das größte Problem ist, dass es unmöglich ist, die Geschwindigkeit einer App zu ermitteln, ohne sie tatsächlich auf dem Gerät auszuführen. Entwickler führen die meisten grundlegenden App-Tests im iPhone Simulator durch (der nach meiner Erfahrung bis zu 1000-mal schneller ausgeführt werden kann). Einige Operationen, die einen Sekundenbruchteil im Simulator benötigen, erfordern möglicherweise eine Fortschrittsanzeige auf dem Telefon, und wenn Sie feststellen, würde es viel Aufwand erfordern, zurückzugehen und die fragliche Operation hinzuzufügen (und in einigen Fällen einzufädeln). Wie Noshredna darauf hingewiesen hat, handelt es sich in der Regel um eine 99c-App.

Der Prozessor des iPhone ist auch nur im Grunde begrenzt. Ich habe einige gut aussehende Apps gesehen, die versuchen, sehr beeindruckende Dinge zu tun, ohne die Einschränkungen der Plattform zu akzeptieren.

Diese Art von Randnotiz ist, und ich möchte nicht über die mobile Plattform Kriege beginnen, aber ich habe festgestellt, dass das iPhone Apps als Android-Apps im Allgemeinen mehr ansprechen ...

+0

Als ich anfing, das Gerät zu testen, stellte ich fest, dass ich nur selten zum Simulator zurückkehrte. Vielleicht hängt das davon ab, wie sehr Sie sich auf einige Dinge verlassen, die der Simulator überhaupt nicht tut. – Nosredna

+1

Ich bin mir nicht sicher, wie weit ich das Argument "iPhone Prozessor ist langsam" kaufe. Der Prozessor der PlayStation 2 war ein 300 MHz MIPS im Vergleich zu 620 MHz ARM des iPhone, und diese Apps reagierten auf alles in 33,3 ms oder weniger. – Crashworks

+0

Das stimmt, die Playstation hatte einen Speicherbus, der fast 3GB pro Sekunde ziehen konnte - ich frage mich, ob das einen Unterschied machte? Du hast definitiv Recht. Im Vergleich zum iPhone haben sie mit den begrenzten Ressourcen einige erstaunliche Dinge gemacht. –

2

Wie bereits erwähnt das Verhältnis von Gewinn/Zeit, die in der Entwicklung ausgegeben wird, würde es erklären.

Technisch würde ich sagen, dass die Verzögerung, die Sie sehen, beim Start erstellt wird, wenn Apps entweder Daten über das Netzwerk erhalten oder nach Hause anrufen, um nach Updates zu suchen und so weiter. Zusätzlich kann es mit initialisierenden Anwendungen wie dem Laden großer Datenmengen aus Datenbanken/Dateien, dem Laden von GUI-Komponenten und Bildern, dem Zeichnen usw. erstellt werden.

Ähnlich wie bei der Speicherverwaltung kann dies alles durch das Entwerfen von Vorgängen im Hintergrund, Lazy Loading usw. gelöst werden, aber das erfordert mehr Zeit, Zeit ist Geld, Sie bekommen nicht viel für 99C app, die kann oder nicht überhaupt verkaufen.

Es ist interessant, dass so oft in Fachartikeln (no ref ...) darauf hingewiesen wird, dass wir uns nicht mehr um Speicher und Geschwindigkeit kümmern sollten, weil Desktops mit mehr Speicher schneller werden.Was die Leute vergessen, ist, dass wir gleichzeitig versuchen, mehr Strom von kleineren und kleineren Geräten zu bekommen, die mit kleineren Ressourcen arbeiten.

Die meisten Webseiten zum Beispiel sind heutzutage entworfen, um große Mengen von Animationen und Bildern zu laden und, im Gegensatz zu anderen, sind sie nicht für die Leistung optimiert, aber auf Desktops in Ordnung. Diese Webseiten haben keine Chance auf das Mobilgerät geladen zu werden. Das gleiche gilt für Anwendungen, ein fettes großes Framework (oder eine GUI-Widget-Bibliothek) für den Desktop zu entwickeln wird es extrem schwierig machen, die Funktionalität auf ein schlankes mobiles Gerät zu portieren, sei es iPhone, einige Fruchtbeeren und was nicht.

Wie in anderen Dingen im Leben, bekommen Sie, was Sie bezahlt haben.

Mein 99C.

5

Ich denke, dass die Leistungsprobleme eine Frage der Wahrnehmung sind. Apple hat Animationen in jedem Aspekt der Benutzeroberfläche des iPhones eingesetzt, was den Eindruck eines reibungslosen, reaktionsschnellen Geräts erweckt. Die Verlangsamungen, auf die Sie sich beziehen, erscheinen viel schlimmer, als sie sein könnten, weil sie sich von der ansonsten flüssigen Schnittstelle abheben. Wenn Sie die Gesamtausführungszeiten dieser Aufgaben mit ähnlichen Anwendungen auf anderen mobilen Geräten vergleichen, würde ich annehmen, dass die iPhone-Implementierungen immer noch in der Nähe der Spitze erscheinen würden.

Es gibt jedoch immer Raum für Verbesserungen, und ich würde erwarten, dass viele der Tricks, die die Leute im letzten Jahr gelernt haben, zu schnelleren, reaktionsfreudigeren Anwendungen führen werden. Selbst die Entwicklungstools selbst kommen voran, und das sollte die Diagnose und den Umgang mit Performance-Engpässen erleichtern. Ich weiß, dass ich jede Woche neue Tricks lerne, um etwas mehr aus der CPU, der GPU oder dem integrierten Speicher herauszuholen.

Ich bin immer noch überrascht, wie schnell die Menschen ihre Erwartungen hinsichtlich der Möglichkeiten von Handheld-Geräten verschoben haben. Ich bin der Autor einer Open-Source-Anwendung namens Molecules, die 3D-Molekülmodellierung auf dem iPhone macht. Vor etwas mehr als zehn Jahren wurden diese Arten von Renderings auf dedizierten SGI Irix-Workstations ausgeführt. Ein paar Wochen nach dem Start des App Stores erhielt ich E-Mails von Leuten, die sich darüber beschweren, dass die Anwendung etwas ruckelig war, wenn sie versuchten, Moleküle mit über 20.000 Atomen in ihrer Struktur zu manipulieren. In sehr kurzer Zeit gingen die Menschen davon aus, diese Geräte wie Telefone und Musikplayer so zu behandeln, dass sie sie als tragbare Computer ansahen.

+0

Das Problem ist, dass sich das iPhone wirklich als mobiler Computer präsentiert, mit einer Vielzahl von Apps, die Dinge deutlich über ein Telefon hinaus tun. Außerdem sehe ich selbst in mobilen Geräten eine viel bessere Reaktionsfähigkeit und einen höheren Durchsatz, beispielsweise von einer PSP, die die Hälfte der CPU-Leistung hat. – Crashworks

+0

Sicher, jetzt ist es einfach, es als Computer zu betrachten, aber wie viele Leute dachten so vor dem Launch des Appstores? Soweit die PSP, vergleichen Sie nicht Äpfel mit Äpfeln. Haben Sie versucht, den PSP-Webbrowser zu verwenden? Es ist viel langsamer und weniger leistungsfähig als auf dem iPhone. Das meiste von dem, was Sie sehen, sind 3D-Spiele, und die PSP verfügt über dedizierte Hardware, die die 50-fache Anzahl der Dreiecke, die das iPhone macht, um 50% erhöht. Für Nicht-Spielaufgaben ist die PSP nicht annähernd so leistungsfähig wie das iPhone. Viel Glück, auch dafür zu veröffentlichen. –

-2

Nun, weil Sie vielleicht die App gelöscht und neu installiert haben, weil etwas falsches passiert, so dass es eine Weile dauern musste, dauerte es ungefähr 2 oder 3 Tage, um voll geladen zu werden. Vielleicht hat dein Iphone auch keine weiteren Felder für deine App, oder deine App ist ziemlich schwer, versuche andere Apps zu löschen, damit sie Räume haben.

+0

Das Löschen einer App auf dem Gerät sollte keinen Einfluss auf die Leistung anderer Anwendungen haben. Wie ich es verstehe, verwendet das iPhone keinen Swap Space im Dateisystem, so dass Apps im RAM auf den physischen Speicher im Gerät beschränkt sind. Da es keinen Grund gibt, Dateisystemspeicher als temporären Speicher als virtuellen RAM zu verwenden, macht das Löschen von Apps zur Beschleunigung anderer Anwendungen keinen Sinn. – rickerbh