Ho fatto alcuni test di base multi-threading qui e ho notato che l'aumento di velocità quando si utilizza l'esatto è più grande di quanto mi aspettassi.
Supponevo che la velocità aumentasse linearmente fino a raggiungere il limite dei nuclei, quindi smettere di aumentare o addirittura rallentare.
Invece la velocità aumenta in modo lineare e poi JUMPS verso l'alto, ma sulla prossima quantità di thread (1+ rispetto alla macchina hanno core), "continua" da dove era prima.
Un grafico ad esempio sembrava una lunga funzione lineare, con un gigantesco picco nel mezzo, in cui avevo lo stesso numero di thread dei nuclei.
Quindi, perché?
PS: prima che qualcuno punti l'ovvio (che usando il numero di core della CPU significhi usare il massimo della CPU), so già l'ovvio, sto chiedendo del non ovvio.
EDIT: grafico realizzato in R, è il numero di "svolte" che il simulatore può eseguire per MS.
L'algoritmoèinesecuzioneattraversounaseriediagenti,quindieseguealcunicalcoliavirgolamobile,eseguealcuniconfronticonilnumerodisvoltaequindichiamaunafunzionecheeseguepiùcalcolimatematiciavirgolamobile,sultestdelgraficolafunzionenonerainlinea.
EDIT2:
Stessoprogramma,maconbuild"release".
Inoltre, vorrei notare che i "thread" qui si riferiscono ai thread worker, c'è anche un thread UI + Boss che si aggiorna alla stessa velocità di OpenGL, apparentemente questo è diventato importante su MacMini, dal momento che il grafico appare come " spento di uno "
Ecco le prestazioni di MacMini da solo, la sua CPU è un i5-2415M da 2,3 GHz (con incremento di 2,9 GHz) 2 core + HT.
EccoleprestazionidiZephyr+MacMininellaparteinferioredelgrafico,lasuaCPUèuni5-4690KconilcomportamentodiIntel,ha4core,manonhaHT.