branch-prediction

Dlaczego przetwarzanie posortowanej tablicy jest szybsze niż przetwarzanie niesortowanej tablicy?

Oto fragment kodu C++, który pokazuje bardzo dziwne zachowanie. Z jakiegoś dziwnego powodu, sortowanie danych w cudowny sposó ... przetwarzanie niesortowanej tablicy? Kod podsumowuje kilka niezależnych terminów, więc kolejność nie powinna mieć znaczenia.

Dlaczego jest (a * b!= 0) szybciej niż (a!= 0 & & b!= 0) w Javie?

Piszę kod w Javie, gdzie w pewnym momencie przepływ programu zależy od tego, czy dwie zmienne int, "a" i "b", są niezerowe (u ... _45 Java (TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot (TM) 64-Bit Serwer VM (build 25.45-B02, mixed mode)

Czy istnieje podpowiedź dla kompilatora GCC, aby wymusić przewidywanie gałęzi, aby zawsze szło w określony sposób?

Dla architektur Intela, czy istnieje sposób, aby polecić kompilatorowi GCC generowanie kodu, który zawsze wymusza przewidywan ... oże tylko podać podpowiedź, gdy procesor pierwszy raz napotka instrukcję, wszystkie kolejne odgałęzienia, działają normalnie?

Jaki jest efekt zamawiania twierdzeń if ... else if według prawdopodobieństwa?

Konkretnie, jeśli mam serię if...else if wypowiedzi, a ja jakoś znam z góry względne prawdopodobieństwo, że każde twierdzenie ... twierdzenia muszą być oceniane w określonej kolejności, aby osiągnąć pożądane zachowanie, kwestia wydajności jest dyskusyjna.

W Javie można & być szybszym niż &&?

W tym kodzie: if (value >= x && value <= y) { Gdy value >= x i value <= y są tak samo prawdopodobne, ... ęc postawmy pytanie w ten sposób: czy użycie & (Gdzie && byłoby bardziej normalne) jest prawdziwą optymalizacją?

Jak mogę zrobić kod bez rozgałęzień?

Związane z tą odpowiedzią: https://stackoverflow.com/a/11227902/4714970 W powyższej odpowiedzi wspomniano, jak można unik ... kie są ogólne sposoby, w jakie mogę robić podobne rzeczy w podobnych sytuacjach? Czy zawsze będzie to za pomocą >> i ~?

Przenośne wskazówki do przewidywania gałęzi

Czy Jest jakiś przenośny sposób robienia podpowiedzi do przewidywania gałęzi? Rozważ następujący przykład: if (unlikely_c ... a? (np. _ _ builtin _ expect na GCC) Czy Kompilatory będą traktować Warunki if inaczej w zależności od kolejności warunków?

Intel x86 0x2e/0x3e prefix Branch prediction rzeczywiście używany?

W najnowszym podręczniku Intel software dev opisuje dwa prefiksy kodu opcode: Group 2 > Branch Hints 0x2E: Branch N ... 40050c: 00 00 00 40050f: 90 nop Nie widzę 2E czy 3E ? Może z jakiegoś powodu gcc ich ominęło?