Meine Frage bezieht sich speziell auf iPhone, iPod und iPad, da ich davon ausgehe, dass die Architektur einen großen Unterschied macht. Ich hoffe, dass es irgendwo eine Spezifikation gibt (vielleicht für die verschiedenen Chips), oder eine zuverlässige Methode, T für jede spezifische Anweisung zu messen. Ich weiß, dass ich eine beliebige Anzahl von Werkzeugen verwenden kann, um die insgesamt verbrauchte Prozessorzeit, den verwendeten Speicher usw. zu messen. Ich möchte auf einer niedrigeren Ebene quantifizieren.Wie finde ich den Zeitwert der Operation, um den neuen Algorithmus zu optimieren?
So kann ich herausfinden, wie oft ich durch den Hauptteil des Algorithmus gehe. Zum Beispiel iteriere ich n * (n-1)
mal in einer naiven Implementierung und zwischen n
(bester Fall) und n + n * (n-1)
(schlimmster Fall) in einem anderen. Ich kann auch die Gesamtzahl der Anweisungen (+ - =% * /, und logische Anweisungen) vernünftig zählen, und ich kann diese Zahlen vergleichen, aber das bedeutet, dass das Gewicht jeder Operation gleich ist. Außerdem habe ich keine Ahnung, wie man den tatsächlichen Zeitwert einer logischen Aussage (falls sonst, für, während) gegenüber einem mathematischen Operator ... gewichtet, ist "wenn" so viel Arbeit wie "+" jedes Mal, wenn ich benutze es? Ich würde gerne wissen, wo ich diese Informationen finde.
Aus Gründen der Klarheit ist es mein Ziel herauszufinden, wie viel Prozessorzeit ich von der CPU (oder GPU oder einem U) benötige, um einen optimalen Algorithmus für die Prozessorzeit zu entwickeln. Kann mir jemand eine Idee geben, wo ich für iOS-Hardware anfangen soll?
Edit: This link to ClockServices.c und SIMD Zeug im Entwickler-Portal könnte ein guter Anfang für Leute, die daran interessiert sind. Ein paar weitere Tassen Kaffee heute Abend und ich könnte durchkommen;)
Das meiste, was ich bewerten möchte, ist nur C. Ich wäre damit glücklich. Es wäre jedoch nett, die Kosten für die Iteration durch ein NSArray zu kennen; aber das hört sich an, als könnte es komplex und variabel sein. Ich weiß einfach nicht, wie viel ich hoffen kann, es herauszufinden ... Ich werde mich mit den grundlegenden C-Operationen sicher zufrieden geben;) – Rab
Ja, ich dachte daran (die Million Tests), aber es ist ein guter Kommentar. Ich dachte über Lauftests nach, wie Sie sagen, aber ich habe zwei Ängste über die Ergebnisse. Einer davon ist, dass mein Test in gewisser Weise naiv sein wird, und ich werde eine Menge Arbeit für Informationen leisten, die nicht bestehen, wenn der Compiler sich entscheidet, etwas anderes zu tun. Zweitens habe ich nur ein paar Geräte und einige haben unterschiedliche Chips.Meine liebste Hoffnung ist vielleicht, dass jemand Diagramme mit genauen Schätzungen für den Zeitwert von C-Operationen für einen bestimmten Prozessor hat. – Rab
Bekam ein Kichern aus dem NSArray-Kommentar. Ich hoffe mein NSArray bluescht mich nicht oder so;) – Rab