Hat jemand ein bvernünftiges foreach-makro?

  • Na, das Sortieren ist ja immer gleich, unabhängig vom Model. -compare(NSString) mag schlecht sein, keine Ahnung. Deshalb sollte man darauf achten, dass man sortiert, was sortiert werden muss.

    Um das wieder in Verbindung mit ddem Thema zu setzen:
    Bei einer Datenbank musst du letztlich die Tabelle sortieren. Wobei es hier *kopfkratz* ja auch Techniken gibt, zuerst zu filtern und dann zu sortieren.

    Bei Core Data sortierst du grundsätzlich nur die verwiesenen Instanzen. Also, hast du eine Entität Parent mit 1000 Instannzen und eine entität Child mit jeweils 1000 Instanzen, musst du nicht 1.000.000 Einträge sortieren, sondern 1.000 x 1.000 (AFAIK das ist bereits performanter, weil Sortieren schlechter als O(n) ist) und das auch nur dann, wenn du wirklich auch alle 1.000 Parents gleichzeitig benötigst, was eher selten der Fall ist.

    Wenn du exakt das gleiche mit SQL und CD machst, dann dürfte SQL besser abschneiden. Das ist schließlich sehr als und auf "Tabellenarbeit" optimiert. Aber mit CD arbeitest du erst gar nicht an Tabellen. Das ist der Trick. Um es kurz zu sagen: Bei einem Fetch ist CD unerträglich schlecht. Und hier sagt die Doku wirklich, dass erst alle Elemente geladen werden. *schauder* Aber man benötigt eben normalerweise keinen Fetch.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von gritsch@nuke: bitte aus der forschleife das anlegen der string-variable rausnehmen.


    Hab ich gemacht, bei 500000 Einträgen:


    Quellcode

    1. for-Schleife: 0.06541
    2. Enumerator: 0.041162
    3. for-Schleife mit IMP: 0.036437
    4. IMP-Enumerator: 0.030147


    Wie man sieht, wird es dadurch nur schlechter. ;)

    Also statt

    for..
    NSString *txt = ...

    hab ich jetzt

    NSString *txt;
    for...
    txt = ...
  • Original von Tom9811Ist zufällig mal die Festplatte angesprungen?


    Keine Ahnung. ;) Kann auch am CPU-Cache liegen, oder was auch immer. ;)

    Ist ja auch egal. Das IMP schneller ist, ist ja nicht verwunderlich. Nur bringt es bei steigender Anzahl der Elemente wohl nur immer weniger.
  • Dazu benötige ich nicht alle Daten gleichzeitig. Denke mal über Lazyness nach.

    Aber es gibt Fälle, etwa bei einem undifferenzierten Suchen. Und?

    BTW: Es würde vielleicht etwas voran bringen, wenn du weniger darüber nachdenkst, warum das allles auf keinen Fall sein kann und dafür etwas mehr darüber, wie man derlei Probleme in den Griff bekommt.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?