ist ein library code schneller als arduino code?

ich hab nix dazu gefunden deshalb hier die Frage: wird ein code als library schneller verarbeitet als ein in arduino geschriebener code? THX

karlo: ich hab nix dazu gefunden deshalb hier die Frage: wird ein code als library schneller verarbeitet als ein in arduino geschriebener code?

Was bitte soll ein "in Arduino geschriebener Code" sein?

Libraries wie auch Sketche werden in C/C++ geschrieben.

Wie schnell welcher Code ausgeführt wird, hängt vom Code ab und von der Taktrate des Controllers.

Oh entschuldigen Sie bitte Herr Doktore C/C++

Also nochmal ausführlicher: Gleiche Funktion einmal als library und einmal als arduino sketch auf einem Arduino UNO laufend. Ist die Verarbeitungsgeschwindigkeit als libray und als arduino sketch die gleiche ?

Entschuldigen SIE bitte wenn ich SIE mit solchen Anfänger Fragen belästigt haben sollte. Danke nochmals.

karlo: Gleiche Funktion einmal als library und einmal als arduino sketch auf einem Arduino UNO laufend. Ist die Verarbeitungsgeschwindigkeit als libray und als arduino sketch die gleiche ?

Ja.

Die Librarys sind nur Hilfen um den Code besser zu strukturieren und oft gebrauchte Funktionen einfach zur Verfügung zu haben. Sie enthalten nichts, was nicht auch in einem normalem Sketch unterzubringen wäre. In den Librarys ist oft viel mehr enthalten als man für das individuelle Problem gebraucht wird. Es kann sich also lohnen optimierte Funktionen einzusetzen, die dann schneller laufen und weniger Speicher brauchen.

karlo: Oh entschuldigen Sie bitte Herr Doktore C/C++

Also nochmal ausführlicher: Gleiche Funktion einmal als library und einmal als arduino sketch auf einem Arduino UNO laufend. Ist die Verarbeitungsgeschwindigkeit als libray und als arduino sketch die gleiche ?

Entschuldigen SIE bitte wenn ich SIE mit solchen Anfänger Fragen belästigt haben sollte. Danke nochmals.

Herr Karlo Entschuldigen Sie bitte daß wir ihre Sensibilät so arg strapaziert haben. Ich möcht mich nochmals als Moderator im Namen der User entschuldigen. ]:) ]:) ]:)

Bibliotheken werden vom Compiler in den Sketch eingefügt.

Eine Funktion in einer Bibliothek ist gleich schnell als die gleiche Funktion im Sketch. Unterschied ist daß Bibliotheken auch von Informatikern geschrieben werden und die haben mehr Erfahrung einen C-Kode zu optimieren und Geschwindigkeit herauszuholen. Auch sind einige Bibliotheken aus Geschwindigkeitsgründen mit Teilen in Assembler geschrieben. Ein Durchschnittsuser hat einfach nicht das nötige Wissen und die nötige Erfahrung um Kode zu optimieren und Assembler einzusetzen. Es gibt aber auch Bibliotheken die schlecht geschrieben sind.

Grüße Uwe

Theseus:
Die Librarys sind nur Hilfen um den Code besser zu strukturieren und oft gebrauchte Funktionen einfach zur Verfügung zu haben.

Wobei der AVR GCC Compiler die kompilierten Dateien immer optimiert, und zwar jede kompilierte Datei für sich.

Das kann im Endeffekt wegen der Optimierung durchaus dazu führen, dass der Compiler - je nach Datei und dem darin enthaltenen Code - unterschiedliche Optimierungsmöglichkeiten in verschiedenen Dateien findet und so unterschiedlich schnell laufende Funktionen aus demselben Quellcode erzeugen kann. Nennenswerte Unterschiede in der Laufzeit von Funktionen dürfte man allerdings nur finden können, wenn in einem Sketch eine bestimmte Funktion mit “Konstanten” als Parameter aufgerufen wird, so dass im Endeffekt das Ergebnis der Funktion bereits zum Zeitpunkt der Kompilierung ausgerechnet werden könnte.

Und in dem Falle wäre nicht die “Funktion in der Library” schneller, sondern umgekehrt die “Funktion im Sketch”, wenn die Funktion und die Konstanten mit denen sie aufgerufen wird, in derselben Datei stehen.

Wenn Du zum Beispiel eine Funktion zum Berechnen der Summe zwischen einer Anfangszahl und einer Endzahl machst:

long addNumbers1(long from, long to)
{
  long result=0;
  for (long l=from; l<=to;l++) result+=l;
  return result;
}

Und Du schreibst im Quellcode als Funktionsaufruf hin:

long sum=addNumbers(1,100);

Dann steht das Ergebnis quasi schon unveränderlich fest, weil die Summe der Zahlen von 1 bis 100 unveränderlich ist, und wenn sowohl die Funktion als auch der Funktionsaufruf in derselben Datei steht, könnte der Compiler das erkennen und intern daraus machen:

long sum=5050;

Und die Funktion aus dem Programm “wegoptimieren”, wenn die sonst nicht benötigt wird.
In dem Fall würde der aus dem Sketch heraus optimierte Code sehr viel schneller laufen als jeder Funktionsaufruf aus einer Library, der zum tatsächlichen Addieren der Zahlen führen würde.

Ja, besten Dank, wieder was dazugelernt. Frage beantwortet. Danke nochmals.