Millisekunden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Millisekunden

    Holla,

    ich möchte gern so "billig" wie möglich in einer Methode, die wiederholt und tendnziell schnell aufgerufen wird oder werden kann (CLLocation-Delegate) eine Prüfung einbauen, die Aufrufe nur durchleitet, wenn eine bestimmte Zeit verstrichen ist. Dabei soll nicht "Sekunden", sondern "Millisekunden" die kleinste Einheit sein - um eben auch 1/2 Sekunde abbilden zu können. Weniger ist in der Tat nicht sinnvoll.

    Ich habe time() angesehen, hier werden aber nur Sekunden geliefert.

    Ich habe gettimeofday() angesehen, hier kommen aber z.T. merkwürdige (nämlich gleiche) Ergebnisse bei verschiedenen Einstiegen in die Methode vor.

    Ich habe CFAbsoluteTimeGetCurrent() angesehen, hier scheint es aber positive und negative Werte geben zu können.

    clock() kommt nicht in Frage, weil sich der Rückgabewert nur auf den Scope des Prozesses bezieht. clock() wäre allerdings ideal.

    NSDate kommt nicht in Frage, weil zu "teuer".

    Habt Ihr eine Idee?
  • Danke für den Tipp mit mach_absolute_time(). Allerdings scheint das ganze Brimborium drumrum (v.a. AbsoluteToNanoseconds()) nicht im MobileCoreServiceFramework enthalten zu sein und CoreService ist nicht für iOS verfügbar. Auf CFAbsoluteTimeGetCurrent() umstellen klappt auch nicht, da nur Sekunden geliefert werden.
  • fwtag schrieb:

    Danke für den Tipp mit mach_absolute_time(). Allerdings scheint das ganze Brimborium drumrum (v.a. AbsoluteToNanoseconds()) nicht im MobileCoreServiceFramework enthalten zu sein und CoreService ist nicht für iOS verfügbar. Auf CFAbsoluteTimeGetCurrent() umstellen klappt auch nicht, da nur Sekunden geliefert werden.


    das liefert dir aber doch ein double, oder runden die das double immer auf ganze sekunden auf???
  • DAs mit gettimeofday verstehe ich nicht

    Ich benutze das in meiner Videoschnitt Software unter Unix und das klappt wunderbar

    C-Quellcode

    1. #include <iostream>
    2. #include <sys/time.h> // for gettimeofday()
    3. int main()
    4. {
    5. timeval t1, t2;
    6. double elapsedTime;
    7. // start timer
    8. gettimeofday(&t1, NULL);
    9. // do something
    10. // ...
    11. // stop timer
    12. gettimeofday(&t2, NULL);
    13. // compute and print the elapsed time in millisec
    14. elapsedTime = (t2.tv_sec - t1.tv_sec) * 1000.0; // sec to ms
    15. elapsedTime += (t2.tv_usec - t1.tv_usec) / 1000.0; // us to ms
    16. }
    Alles anzeigen
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    DAs mit gettimeofday verstehe ich nicht

    Ich benutze das in meiner Videoschnitt Software unter Unix und das klappt wunderbar

    C-Quellcode

    1. #include <iostream>
    2. #include <sys/time.h> // for gettimeofday()
    3. int main()
    4. {
    5. timeval t1, t2;
    6. double elapsedTime;
    7. // start timer
    8. gettimeofday(&t1, NULL);
    9. // do something
    10. // ...
    11. // stop timer
    12. gettimeofday(&t2, NULL);
    13. // compute and print the elapsed time in millisec
    14. elapsedTime = (t2.tv_sec - t1.tv_sec) * 1000.0; // sec to ms
    15. elapsedTime += (t2.tv_usec - t1.tv_usec) / 1000.0; // us to ms
    16. }
    Alles anzeigen


    sogar unter windows funktioniert es - frage mich also warum es unter iOS nicht gehen sollte (falsch angewendet vielleicht)