Welche Techniken zu vermeiden, die bedingte Verzweigung, weißt du?

Manchmal ist eine Schleife, wo die CPU verbringt die meiste Zeit hat Sie einige branch prediction miss (misprediction) sehr oft (in der Nähe .5 Wahrscheinlichkeit.) Ich habe gesehen, ein paar Techniken, die auf sehr vereinzelte threads, aber nie eine Liste. Die meisten die ich kenne bereits fix Situationen, in denen der Zustand kann sich zu einem bool und 0/1 verwendet wird, in irgendeiner Weise zu ändern. Gibt es andere, bedingten Verzweigungen, die vermieden werden können?

z.B. (pseudocode)

loop () {
  if (in[i] < C )
    out[o++] = in[i++]
  ...
}

Umgeschrieben werden kann, wohl verlieren einige Lesbarkeit, mit so etwas wie dies:

loop() {
  out[o] = in[i]  //copy anyway, just don't increment
  inc = in[i] < C  //increment counters? (0 or 1)
  o += inc
  i += inc
}

Zudem habe ich gesehen, Techniken in der wildnis ändern && zu & in den Bedingungen, in bestimmten Kontexten entkommen meinem Kopf jetzt. Ich bin ein Neuling auf dieser Ebene der Optimierung, aber es sicher fühlt sich an wie es muss mehr sein.

  • Schlechtes Beispiel. Auch wenn die astfreie code gesehen werden kann, als gleichwertig mit dem original, das auch nur, wenn der ursprüngliche code hat keinen Sinn, in den ersten Platz.
  • warum so viele Menschen reagieren mit einer Antwort, die nicht wirklich die Beantwortung der Frage, ist mir schleierhaft
InformationsquelleAutor alecco | 2009-10-24
Schreibe einen Kommentar