Frage von Eltr0n, 113

Android App entwickeln?

Ich Programmiere jetzt schon seit einiger Zeit Android Apps für Java.Nun habe ich allerdings einen sehr Rechen intensiven Algorithmus.

Selbst mit Multi Thread lässt die Geschwindigkeit nun sehr zu wünschen übrig.

Nun habe ich nach einiger Recherche herausgefunden das sich Android Apps auch in C oder Assembler programmieren lassen.

Doch ist dies dann wirklich schneller?

Oder gibt es eine andere Möglichkeit denn Algorithmus möglichst schnell auf Android auszuführen?

Freue mich auf jede Antwort :)

Schonmal danke im voraus.

Eltr0n

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von ChuckBoris, 51

Obwohl der JIT-Compiler einen großen Teil abnimmt, solltest Du erst einmal versuchen, den Algorithmus selbst zu optimieren.

Sollte die Ausführung noch immer lange dauern, wäre es tatsächlich sinnvoll, das Programm direkt in C mithilfe des NDK zu schreiben.

Kommentar von Eltr0n ,

Schon mal riesigen dank für deine Antwort.

Ich befürchte das ich denn Algorithmus nicht weiter optimieren kann.

Es geht in meinem Fall darum sehr große Primzahlen zu finden für eine RSA 8192 bit Verschlüsselung.Dies dauert jetzt mit Java schon eine ganze Weile deshalb meine Frage.

Hätte jetzt nur noch eine Frage : Ich habe inzwischen sowohl Assembler als auch in C programmiert und nach meinem Wissen sollte Assembler doch eigentlich schneller sein, da Hardware naher.Doch ist dies auch bei Android der fall? 

Eltr0n

Kommentar von ChuckBoris ,

Sorry für die verspätete Antwort & danke!

(Handgeschriebener) Assemblercode ist oftmals schneller, sofern er gut optimiert ist.

Würden auch 4096 Bits genügen? 8192 klingt nach Overkill.

Antwort
von androhecker, 32

Wenn es in ART läuft wäre es VIEL langsamer und wenn es außerhalb läuft kaum schneller, Java ist eine der schnellsten Sprachen, in manchen Punkten sogar schneller als C. Ich glaube eher, dass dein Algorithmus nicht optimiert ist. Dass es nicht gut läuft wenn ich eine For Schleife 10000 mal durchlaufen lasse kann man sich denken.

Kommentar von Eltr0n ,

Hallo androhecker,erstmal vielen dank für deine Antwort.

Bin allerdings jetzt etwas verwirrt.Java ist doch grundsätzlich eigentlich langsamer als Programmiersprachen wie z.B. Assenbler oder C. Da Java ja eine Hochsprache ist,ist das eigentlich doch auch verständlich oder irre ich mich da?

Leider weiß ich nicht wie das ganze auf Android aussieht.

Nein mein Algorithmus ist so Rechen aufwändig da es einfach schwierig ist große Prinzahlen zu berrechen.Zudem ist es nichtmal ein deterministisch System weshalb es auch wesentlich schneller ist als andere Methoden.Benutze also keine For Schleife die prüft ob eine Zahl ein Teiler ist.Aber dennoch dauert es ziemlich lange bis ein Ergebnis gefunden wird.

Werde das ganze morgen einfach mal selbst ausprobieren und denn Code in C mithilfe des NDK Programmieren.Kann dann auch gerne die Ergebnisse posten.

Eltr0n

Kommentar von androhecker ,

Natürlich ist C etwas schneller, aber das JRE und ART wurden in den letzten Jahren so verbessert, dass es kaum noch Unterschiede gibt.

Antwort
von Logdash, 63

Willst du jetzt eine Anleitung wie man eine App entwickelt?

Kommentar von Eltr0n ,

Frage wurde nun eingestellt danke

Antwort
von jonashima, 42

Hol dir Android Studio und schau dir auf youtube ein paar Tutorials an

Kommentar von Eltr0n ,

Danke aber hab ich nun schon wirklich zur genüge getan.

Leider fand ich nichts zu meiner eigentlichen Frage.

Kommentar von jonashima ,

Tut mir leid zu der Zeit war irgendwie der Inhalt deiner Frage noch nicht da und man konnte nur die Überschrift lesen.

Antwort
von JuicyLuisian, 46

Ja, das geht!

Antwort
von Dovahkiin11, 45

Ja, soll es geben.

Antwort
von KurtSchwitterZ, 44

Ja, die haben da schon Evolution.

Kommentar von Eltr0n ,

Es tut mir leid würde natürlich niemals so eine Frage einstelle.Frage wurde jetzt eingestellt.

Keine passende Antwort gefunden?

Fragen Sie die Community