Press "Enter" to skip to content

GOTO 2015 • Designing for Performance • Martin Thompson


okay, benvenuto a quello che sarà
l’ultima traccia in modo da ottenere il cimitero
speriamo che tu stia un po ‘di più
sveglio di me perché sono disperatamente
jet lag e pieno di caffè così è
spero di poterlo tenere insieme, quindi cosa
Voglio parlare di oggi
prestazioni e la cosa più importante
la mia esibizione è un commento di a
prospettiva scientifica e questo ragazzo somma
su così tanto per me per come dovremmo essere
pensando a cose che era famoso
coinvolto in molte cose diverse ma
in particolare lo Space Shuttle e il
tutta la questione di definire il problema
essendo l’ o-ring e spiegando che lui
faceva parte di ciò che era noto come Rogers
Commissione e questi erano due
fatti interessanti su Fineman coinvolti
in questo dichiarato da Rogers così Rogers
ho guidato la Commissione e ho iniziato
dicendo che Fineman sta diventando un vero spillo
si Cap attaccare il naso e tutto
continuava a fare domande che manteneva
sfidando tutto alla fine
Rogers aveva una diversa società di vista lui
lo ha descritto come qualcuno che ha il
maggiore integrità scientifica di chiunque
Ho mai incontrato e un sacco di quello che è
circa è come guarda i problemi è esso
deve essere un esperimento che può essere provato
lui ha un sacco di belle cose su di esso
quindi cerchiamo di Wind indietro un po ‘di
buon uomo e ha ottenuto un premio Nobel
per il suo lavoro su QED e ogni volta che lui
lo ha proposto in origine come è
tre proposte sono tutte allo stesso tempo
il leggermente diverso non significa nessuno
capito che ci sarebbe la stessa cosa per
un po ‘di tempo la maggior parte della gente non era nemmeno giù
con lei su e Freeman Dyson ha funzionato
fuori che lui li ha effettivamente aiutati
spiegare quello che era, ma ho amato il suo
descrizione offerta come il quantum
elettrodinamica è così e così
interessante perché spiega
tutto ciò che si desidera tipo di sapere
in questo pezzo ma il bit mi piace molto
è la teoria più accurata di sempre
testato da esperimenti sulla terra e questo
tipo di riassunto su come dovremmo pensare
sulle prestazioni che vogliamo avere
esperimenti per dimostrarlo , quindi prendiamo un
punto dall’uomo stesso è ciò che fa
non importa quanto sei intelligente se
tu sei il gas che il gas non può essere sostenuto
su prove sperimentali, allora è così
solo il gas ed è un po ‘bello come
alcune persone stanno iniziando
fare questo è stato un ottimo discorso
ieri dove ha spiegato come loro
ha attraversato e ha elaborato quello che loro
dovrebbe fare con i cicli di ventilazione ma
hanno fatto una bestia aplomb sperimentale
prove e questo è davvero importante se
ottieni solo prestazioni che hai
avuto modo di pensare in questo modo così quello che voglio
fare è parlare di come progettiamo per
spettacolo e ne coprirò quattro
argomenti così in copertina che cos’è
le prestazioni il tipo di impostare un po ‘di terreno
per questo ho intenzione di parlare di come
tipo di fare le cose nella stanza pulita
rappresentante moderno che è molto importante
a questo discorso sull’implementazione di modelli
e come facciamo effettivamente le prestazioni
testare se stesso in modo gentile di ciò che è
performance è un concetto molto nebuloso
parliamo di che sistema essere veloce
vogliamo che sia performante, ma quello
in realtà non significa nulla di ciò che noi
davvero iniziare a preoccuparsi è un numero di
le cose una sono la velocità effettiva ed è come
quante unità di qualcosa oltre un dato
periodo di tempo possiamo passare anche bene
ascolta il termine larghezza di banda parola larghezza di banda
tende ad essere il massimo rendimento per
anche quello che stai facendo lo faremo
parliamo di latenza e di cui parleremo
tempo di risposta questi sono due diversi
cose
e ancora nel nostro settore tu continui
mescolandoli, otteniamo tutto abbastanza
confuso ma è come quanto velocemente lo fa
qualcosa risponde o per quanto tempo siamo
strano se vogliamo pensarci
posso anche solo fare un veloce
punto sulla scalabilità che è qualcosa
altro
quindi per scalabilità, ciò che intendiamo è se noi
aggiungere più risorse dovremmo ottenere a
aumento proporzionale del throughput che
è un sistema scalabile se si aggiunge solo
più risorse e non ottieni un
proporzionale aumento del throughput voi
non hanno un sistema molto scalabile
hai un problema da qualche parte e ansar
un grande esempio di questo per avere grandi
la scalabilità non significa che tu abbia un grande
prestazioni nel throughput o nel
centesimi di latenza per unità e il grande
esempio di ciò sono in realtà le formiche
molto stupido quindi la maggior parte delle formiche ha il
lavoro di uscire trovando una foglia prendendo un
pezzo della foglia e riportandolo indietro
ora ogni volta che le formiche vanno a prendere lasciano loro
afferrare con una o tre piccole mani a
un po ‘di foglia e con l’altra
hanno tagliato il 50% del tempo che hanno afferrato
il lato sbagliato e la foglia cade sul
terra in modo che non siano davvero impegnati
per efficienza ma ciò che è veramente pulito
sui giardini dove
l’evoluzione ha fatto qualcosa di molto intelligente
quello non è il costo dominante il
il costo dominante sta portando indietro la nostra cosa
alla madre lode dove sta andando tutto
tornare così dove abbiamo bisogno di portare tutto
torna a quel viaggio di ritorno è il più
parte importante e lo facciamo molto in
la tecnologia è che ci concentriamo su questi piccoli
cose e perdere la grande cosa importante
e quello è il buco in modo che tu non lo faccia
bisogno di essere intelligenti, abbiamo solo bisogno di
fallo bene
ora si tratta di prestazioni penso questo
riassume quasi l’intera immagine per me
questa è la mia vita molto finisco per volare
e finisco per andare al controllo di frontiera e
con questo puoi spiegare tutto
questo è davvero rilevante
performance quindi siamo qui ma a latenza
siamo qui ma il tempo di risposta è diverso
cose come ah quindi qual è la differenza
tra questi li scambiamo semplicemente
ma in realtà c’è un distinto
differenza se si guarda alla teoria delle code
quindi se mi unisco a una di queste code lo sono
sta andando a fare un certo numero di cose e
ognuna di quelle cose che puoi immaginare
loro in tempi diversi, quindi quanto tempo sono
aspettare in coda è la mia latenza
è per quanto tempo sono latente per fare qualcosa
quando arrivo in prima fila e
Vado alla scrivania e ora sto assistendo
questo è il tempo di servizio di un sistema
quelli sono distintamente diversi
ora qual è il tempo di risposta la sua latenza
più tempo di servizio e se non si avvia
modellando queste cose, sto iniziando
fare un po ‘di matematica su di esso dobbiamo
spezzali e comprendi cosa
abbiamo a che fare e come affrontiamo
e così allora che cosa è il parallelismo bene
Ho solo più Q per andare qui è
vedi il modello perfetto per questo tu
parliamo anche di cose come
lavoro-rubare bene e se uno di questi
le code sono troppo lunghe e anche un’altra
Insomma, puoi facilmente far venire qualcuno
e ti dico di spostarti da questo
in coda ad un’altra coda ci sono tutti
questo tipo di cose facciamo questo in
realtà ma abbastanza spesso no
davvero si manifesta correttamente dentro
il software sei davvero molto
semplice come prima ho avuto questo piccolo
chat che ha pensato tempo di risposta e
la latenza era la stessa cosa così cura di
ammettere un sacco di persone probabilmente fare
In effetti, la maggior parte delle persone usa la latenza per
descrivere l’aspetto della latenza del tempo di risposta
la parola cerca nel dizionario è
di essere in ritardo
stai tagliando il tempo di risposta che deve fare
includere anche il tempo di servizio e
una volta capiti questi puoi
in realtà progetta i sistemi meglio e tu
può ottimizzare e profilare e fare tutto
il giusto tipo di cose così dentro
in particolare diamo un’occhiata alla teoria delle code
per un secondo, quindi ogni volta che iniziamo ad usare
il sistema più lo usiamo notiamo
che il nostro tempo di risposta inizia a rallentare
giù bene perché rallenta perché
in realtà il tempo di servizio è lo stesso
ma inizi a unirti alle code e al
la cosa è se vai a qualcosa ed è
essere usato più spesso così l’ utilizzo
sta salendo la probabilità di qualcuno
essere in coda è maggiore quindi se
stai usando solo qualcosa che non è come il 10%
del suo utilizzo le possibilità sono
non c’è nessuno in coda quindi ottieni un
buon tempo di risposta perché non lo sei
animato così il segreto per avere molto
i sistemi responsivi è mantenere il
l’utilizzo verso il basso non li ha in esecuzione
nel massimo utilizzo e possiamo vedere
qui su questo grafico che una volta che vai
evitare una specie dal 60 al 70 percento
l’utilizzo delle cose inizia a diventare bello
male questo funziona anche nella realtà per
progetti e persone e tutto come
che se gestisci le tue squadre a oltre 60 anni
percentuale di utilizzo se ne hai bisogno
rispondere rapidamente per aver bisogno di indovinare cosa
non saranno in grado di farlo
la matematica non è possibile eseguire lontano da questo è
solo la teoria della probabilità è cento
matematica anni ed è ben descritto
e così se inizi a rompere questi
le cose in basso possiamo ottenerlo così, se lo sei
progettare dire un trading finanziario
sistemi che vuoi avere così
sovraccarica che ogni volta che un lavoro
arriva che vuoi avere un utilizzo
così basso che sei praticamente solo
sarò colpito dal tempo di servizio se tu
finiscono per far funzionare abbastanza bene il tuo sistema
occupato in quel punto nel tempo e ottieni
una raffica di traffico in arrivo di utilizzo
è abbastanza alto sei la coda
Sapevo che il tempo di risposta è gonna andare così
sarai consapevole di questi e lo faremo
guarda come li misuriamo e affrontiamo
con loro più tardi , quindi è una specie di uno
dei consigli pro è sempre assicurarti
avere una capacità sufficiente e avere
capacità sufficiente manterrai la tua
utilizzo basso e puoi rispondere
velocemente, quindi se si desidera servizio è
andando rispondere rapidamente esigenze di utilizzo
essere tenuto basso
così possiamo fare un parallelo di accelerazione, andiamo noi
guardato che è un singolo servito in a
cosa singola torniamo a quelle file così
possiamo avere più righe e più
le file che entrano bene sono grandiose ogni volta
quelle file sono tutte completamente
indipendente ma in realtà abbastanza spesso
loro non ci sono di solito alcuni
componente di un algoritmo che
sequenziale non assicurato tra una sorta di
più thread in corso e quindi diciamo
se guardiamo al nostro processo e possiamo adattarci
su NB se riesco a rompere l’aria posso
ottenere un aumento di velocità in modo che sto correndo sul set per
macchina di base posso accelerarlo facendo
aria e parallelo ma diciamo che non posso
rompere B Non sono limitato a ciò che posso
è che è il contrario che posso fare
divisi b ma non riesco a separarmi
solo una certa velocità è um
la legge sulle bambole è in circolazione da molto tempo
mentre in realtà non sono io il cane no
Conia la legge che ha parlato di um dolls
discussione e sta cercando di convincerci
tutto per non andare a comprare macchine di fascia media
avrà bisogno di comprare grandi ditte mian che
sono processori molto veloci perché lui
non volevo fare nel calcolo parallelo
voleva spacciare i suoi mainframe loro
bisogno di un buon punto che in realtà parlor
programmare è difficile, ecco la tua
tipico di questo accelerare le curve come se
Il 50 percento può essere fatto parallelamente possibile
solo darlo a XP dub che non otterrai
più di 2x accelerano come se andassimo
fino al 95 percento del tuo algoritmo possibile
andare in parallelo non si otterrà di più
che un 20x accelera è la matematica
legge non supererai questo e così
hai avuto modo di fare in modo che non lo fai
avere contesa nei tuoi algoritmi ma
in realtà peggiora questo è il
mondo bacio perfetto che costruisce a
contesa che non si tratta di
la coerenza in modo che quando si ha che
contesa dobbiamo fare i risultati
di quella tesi coerente con il
aste diverse e ci avviciniamo leggermente
formula più grande in questa fase Universale
legge di scalabilità ti consiglio di guardare
dentro , ma ora possiamo modellare ciò che è
andando avanti in un sistema basato su
contesa e coerenza comincio a lavorare
fuori qual è il tempo di risposta e cosa
è possibile accelerare questa accelerazione
collegare questo e se collego Co
Qui
Fattore RINs di 250 microsecondi e
fattore contingente del 5% questi sono i
le curve che ottengo quando lancio un problema alle CPU
Non se si ordina di dare un’occhiata a questo grafico, se
guardi qui alla specie di 248
CPU puoi vederlo qui tutto qui
tipo di sguardi e passi e questo è il
mondo in cui siamo stati per un po ‘
la maggior parte delle persone, ma ora siamo
muoversi nel 1632
qualunque sia il nucleo sta salendo e questi sono
tipo di problemi si vede anche questo se
stai facendo qualcosa su Amazon
AWS e si corre con un sacco e un sacco di
macchine dove effettivamente la coerenza
i costi diventano molto più alti che non puoi dividere
su alcuni problemi e dove è giusto
non si ridimensiona e dopo un po ‘ il costo
della coerenza inizia a dominare a
il punto cominciamo a rallentare di nuovo in modo
andare parallelo non è la risposta se
hai qualche problema di coerenza
in effetti hai bisogno di un problema
imbarazzante parallelo e da
imbarazzante in parallelo significa lì
non è un punto di contesa, quindi puoi andare
e scalare abbastanza bene ed è difficile
fai questo così è solo qualcosa da essere
consapevoli spesso attenzione perché è per questo che sono un
grande fan di non avere mai più
piloti per la stessa cosa, se hai
molti piloti hai litigato
hai la coerenza come problema se tu
avere un solo cavaliere si evita la maggior parte di
questo e tu puoi effettivamente esibirti e
scala molto meglio ed è molto più facile
per capire e ragionare così
ci sono buone ragioni per farlo così io
credono anche nelle cose devono essere
pulito e rappresentativo così abbiamo
qui il codice pulito spesso è pulito
movimento e cose che mi piace guardare il
significati di parole abbastanza spesso così loro
avuto un po ‘ di bash sulla latenza, ma facciamolo
vedi guarda pulito, lo adoro
descrizione dall’inglese di Oxford
Dizionario ed è come moralmente
la maggior parte del codice non contaminato quando si guarda
è tutt’altro che incontaminato
in realtà piuttosto disgustoso e così lasciamo il
avere un codice pulito a cui dobbiamo tornare
la purezza di ciò che dovrebbe fare
è anche importante che lo sia
rappresentante e quale rappresentante
significa davvero è che è vero
rappresentazione o qualcosa è il posto
dove catturiamo la nostra comprensione
Penso che la documentazione sia eccezionale è a
ottimo modo di pensare
Don si dovrebbe fare, ma il codice è
in realtà il posto dove dovresti
cattura la tua migliore comprensione e
non sentirti mai male come questo
si fa a mettere nel codice di oggi è il tuo attuale
capendo che è imperfetto, impari
più cose domani dovresti aggiornare
il tuo codice per riflettere ciò che hai imparato
se non lo fai, finisci con il tutto
strisciare tra la tua comprensione e il
posto nel codice quindi se solo
mantenendolo costantemente così dovrebbe
essere il luogo in cui catturi il tuo
modello attuale e andare avanti e quello
il modello non è solo il modello del
business è il modello di come
il sistema funziona perché è vero
riflessione e una vera rappresentazione e quando
hai quella mappatura diretta che trovi
si ottiene davvero grandi prestazioni se
hai un disadattamento di impedenza tra
qual è il tuo modello e cosa è in realtà
andando avanti si finisce con una performance
problema ed è quello che non posso chiamare il
simpatia meccanica che non è necessario
hai una comprensione perfetta che hai
per sapere cosa è abbastanza chi è
rappresentante a ciò che sta succedendo
sotto e quel tipo di ci porta
in astrazione, quindi siamo astratti
cosa succede sotto e noi usiamo
questo termine molto continuo ad ascoltare le persone
dire l’astrazione particolarmente come loro
creerà un’interfaccia o un tipo per
qualcosa e quel tipo è generalmente
usato per rappresentare un numero di cose
che sono come qualcosa che usiamo gentile
di genericamente tendiamo a astratto troppo
rapidamente bene ecco le mie regole di
la regola di astrazione numero uno no
la regola numero due astratta non lo fa nuovo
il numero tre inizia a considerarlo quando
hai visto almeno tre cose
sono le stesse non tipo di forse
sono la stessa cosa usata per iniziare
facendo ciò, le astrazioni hanno un costo
hanno un’interazione di Arif che hanno un sacco
di cose che impongono il tuo codice
e sul tuo modo di pensare, quindi hanno un
coppia per se stessi e sto dicendo di no
fateli completamente iniziare
scherzando se non li faccio voglio dire no
saltare in loro ed effettivamente andare al
altro estremo è asciutta è che molto pericoloso
continua a vedere questo tutto il tempo bene
le persone inizieranno ad asciugare davvero il codice
rapidamente non ti ripeterò che lo faranno
guarda un problema pensa, sì, penso
questa è una specie di cucitura sul creare
astrazione prima ancora che ne creino
del
versetto nel codice basta costruire due tre
qualunque sia completamente indipendente
cose che devi fare, allora guarda
li dopo e vedi se ce n’è
comunanza Continuo a vederlo su questo
anche se corriamo il contrario
un grosso difetto perché hai commesso
tu stesso hai creato il tuo piccolo bambino o
in alcuni casi il tuo mostro e tu vuoi
per tenerlo in vita e tenerlo dentro
e poi questo rimane nel codice anche
anche se lo sai meglio e io ma te
perché sei stato investito in te
non liberartene è molto meglio
andare il contrario, anche se si
devi copiare e incollare completamente
riscrivere qualcosa farlo funzionare esattamente
come deve essere poi fuori fattore
quello che è comune è il modo migliore di usare
astrazione su questo e poi no
costare ovunque non è tanto speciale
a te stesso e comprensione e
trattare con il tuo codice perché uno di
le cose sono una volta che inizi ad astrarre
diciamo che siamo orientati agli oggetti
mondo creiamo un tipo e poi ci occupiamo
con il nostro tipo polimorficamente una volta
hai una versione di quello che è
sorta di grande che è mega morfico tutto
tempi sbagliati possono fare molto per ottimizzare
che se ottieni due versioni ottieni
biomorfo e possiamo ancora fare un po ‘
le cose lì pure possiamo mettere i rami
in e basta andare su uno dei due fili
tipicamente quando ne ricevi tre o più
vai mag amorphic e iniziamo ad andare
cose come le tabelle spazzatura andranno in
Scoperte le scansioni lineari delle interfacce
quale metodo ho intenzione di effettivamente
eseguire le persone anche rendersi conto di ciò che hai messo
un’interfaccia su una classe che hai
implementazioni multiple C ottenute
più interfacce su una classe quando tu
andare a chiamare quel metodo in fase di esecuzione abbastanza
spesso puoi finire con lineare
cerca attraverso le interfacce perché
ti stai lasciando trasportare da questi
strati di astrazione se ne hai bisogno
grinta ma non metterli solo per il
dannazione
devono essere valsa la pena ed è buono
a volte se ne hai appena uno o due
i tipi si prestano attenzione quando inizi a ricevere
molti tipi di cose, perché i processori
non sono bravi con i rami della griglia con
rami prevedibili non buoni con
rami che non puoi prevedere e abbastanza
spesso inizi a farlo che non lo è
rappresentante e di solito è un grande
odore
Ho Todd parlato in precedenza nel
keynote oggi abbiamo avuto una sorta di fiducia
i nostri sensi hanno fiducia nei nostri gusti e tu sai
quando le cose cominciano a puzzare, ce l’abbiamo
per iniziare ad ascoltarlo e fermarsi
facendo così
tipo di giusto un classico per questo è gentile
di grandi quadri e hey tu dici bene
è un quadro è una biblioteca
Ho una distinzione davvero semplice
dove una volta qualcosa è un quadro quando
qualcosa è una biblioteca se è nei fatti
il tuo codice e ti costringe a lavorare in un
in qualche modo è un quadro tu
non dovrebbe essere farlo
se è la libreria puoi usarla tu
usalo in un bel posticino
di fatto non dirige il tuo codice
buono che è componibile è quello che noi
vogliamo che vogliamo che le cose ci vengano riutilizzate
perché è fantastico ci aiuta e
è isolato se ti costringe
lavorare in un certo modo inizia a preoccuparsi
non puoi in seguito ottimizzare ciò che non puoi
lasciamo che cambiamo un codice e lavoriamo con il
corte bene quindi cosa dovrebbero e questi sono
le cose che ti portano lì finiscono
specialmente con questa mentalità
ci lasciamo trasportare da quadri e
è come se la gente qui andasse mai
backpackers della stagione backpacking così loro
sapere come viaggiare persone leggere che ordinano
di pensare oh sì, ho tutte queste cose
questa roba sarà fantastica per me
ogni volta che vado le nostre basi di codice diventano simili
troppo presto vedo troppo spesso le persone
presentarsi a un progetto e prima di loro
anche risolvere il problema che sono
risolvendo stanno installando l’irrorazione
Hibernia questo che l’ altro è come
cosa sono tutti questi giochi di parole come questo
lo fai oh, abbiamo bisogno di questo prima di noi
iniziare la codifica inizia davvero la codifica quindi
vedere ciò che ti serve e tutto ciò che
l’ ho introdotto , perché è così
ti fa risparmiare tempo e si ripaga da solo se
non usa la luce di viaggio no
perché la tua base di codice è una responsabilità
più ne hai , meno puoi
reagire il più difficile appena più difficile
è andare tutto bene quindi mantieni la roba
luce andrai molto più veloce così
astratto deliberativo ma solo quando
sei sceriffo i benefici
e una delle cose che realmente sta in piedi
per me è come il fatto che abbiamo
una legge di astrazioni che perdono inclinazione
la legge politica è perché ce l’abbiamo
sbagliato stiamo astrarre le cose sbagliate
e ho parlato del non banale in
le astrazioni di fatto non dovrebbero essere grandi
le astrazioni dovrebbero essere piccole se guardiamo
a qualcosa di simile alla matematica
le astrazioni usate sempre e lei è
brillantemente ma è piccola la sua
componibile non è grande nell’imporre
questi sono di solito un buon segno di
l’odore e ho detto Dykstra ha sottolineato
questo davvero bene è se lo usiamo
lo stiamo usando per essere più precisi noi
voglio trattare con qualcosa come a
cosa concreta che capiamo così io
ha detto come possiamo astrarre un sistema di memoria
quindi è una memoria moderna molto complessa
sistemi ma in realtà se capisci
le astrazioni di esso in realtà funziona
davvero bene quindi sta ricevendo questa roba
giusto così i sistemi di memoria sono per tre
scommette è così semplice il nostro Hardware
gli amici stanno lavorando con tre pipistrelli e
il primo pipistrello è un temporale che se io
usare qualcosa che probabilmente userò di nuovo
presto quindi le cose stanno chiudendo il tempo in come
si fa in modo che stanno prendendo così male sul
ora prendono anche un’altra battaglia
spazio quindi cose vicine
tendono ad essere usati insieme e questo è
dove cose come le linee cache OSP invecchia
o TL B è tutto questo tipo di cose così
quello che vuoi fare è tenere la tua roba
insieme che usi insieme
il modo in cui puoi giocare è male e
la terza scommessa e questo è solo tre
in totale c’è un progresso o un vasaio no
scantinato di base così se passi attraverso il codice
in un modo prevedibile attraverso il nostro
dati in un modo prevedibile che può essere
prefetto per voi e nasconde che
tempo di risposta latenza necessario
trattare con qualcosa quindi questo è quello che
conta con le astrazioni che hai ottenuto
capire cosa è ciò che sta facendo
niente di dettaglio
Vedo che le persone diventano ossessionate dalla taglia
il pozzetto della cache non dovrebbe davvero preoccuparsene
a riguardo ti sei accorto che c’è
una cache e la stai usando nella parte destra
negozio quando quelle sono alcune cose
importa in modo da iniziare a pensare e non
sorta di dove – come quello che è il
l’hardware mi ha dato quali sono il tipo di
principi di progettazione le persone che hanno usato
che ha costruito l’hardware che stiamo lavorando per
e assicurati di giocare
bene a quello e poi stai facendo il
giusto tipo di cose
quindi passiamo da questa notte se
siamo Modelli a costruzione gonna abbiamo bisogno di
costruiscile nel giusto tipo di dove
ottenere le nostre prestazioni e abbastanza spesso io
vedere alcuni problemi fondamentali quindi l’accoppiamento
e la coesione è una specie di classico che c’è
molte altre cose di separazione
preoccupazioni ma questi due in particolare sono
un enorme impatto sulle prestazioni e lo è
piuttosto una cosa soffice e sottile, quindi facciamolo
fare un esempio davvero semplice
in realtà crivellato di implicazioni così
sviluppare una battuta è davvero semplice
Q concomitante e non Q sta per essere un
raro indietro quindi abbiamo un buffer in esso
che è un oggetto o raro, quindi posso metterlo
riferimenti nella mia Q e cosa potrei fare
è possibile utilizzare buffer lint come la cosa
per rappresentare la capacità della coda
da una prospettiva di modellazione
non farmi rabbrividire , usa buffered
lunghezze quindi in genere metterò la capacità
nella classe stessa per dire cosa sono
facendo ciò che in realtà finisce per accadere
con questo piccolo cambiamento piuttosto sottile
oltre agli errori di hacking uno sono io
essere più espressivo ed essere di più
rappresentante di ciò che voglio ma se
Voglio calcolare la lunghezza del
coda ci sono arrivato con il meglio
pointer posso arrivarci da morto
calcolando ogni volta che uso questo così è
la scommessa su spaziale è probabilmente in
la stessa linea di cache sarà davvero
veloce se vado a prendere la lunghezza del buffer
Devo seguire un riferimento a
un altro oggetto e leggi il campo dell’obiettivo
questo è un carico dipendente dai dati e il tuo
il processore conta Bakula per arrivarci così
inizia a costarti
Anche io mi sento un po ‘più sottile di così
quindi se sto usando le stecche sono
tipicamente ero pieno o vuoto che non lo facevo
il suggerimento esiste in qualsiasi altro stato e quindi se
ottieni una raffica di traffico per indovinare cosa
succede che si riempie proprio e se
la avvolgi in una stecca circolare sulla testa
e verrà subito uno accanto all’altro
finiscono nella stessa linea di cache abbastanza
spesso rallentando a vicenda attraverso a
la cosa chiamata falsa condivisione va bene
diciamo per esempio che ho deciso di fare
capacità qualunque sia la dimensione del punto del buffer
la lunghezza è meno 32
Ho ridotto la capacità della mia coda
tutto ad un tratto resisterò allo scoppio
scenari se ho intenzione di riempire il
coda non avrò impatto sul
il consumatore abbandona la coda rallentando
giù perché il produttore non lo è
causando false condivisioni di fax e cache
il traffico di coerenza tutto perché sono giusto
in grado di controllarlo con un semplice piccolo
variabile e sto modellando cosa sta succedendo
così semplicemente tirando fuori queste cose
rendendoli importanti penso che tu abbia un
un po ‘ oltre questo è smettere di pensare
dei tuoi corsi sono solo borse di
proprietà devono essere una cosa e una
metà di uno scopo molto chiaro molto
scopo preciso e renderlo espressivo
e una volta che inizi a farlo ottieni
il comportamento migliore di qualcuno che ho menzionato
stamattina nel keynote ciao potrei
spesso andando a vedere diversi clienti
e vedrò i clienti e io
conoscere semplicemente il codice base
iniziando a refactoring e io cerco
tutti questi odori come caratteristica e il
cattive cose di accoppiamento questo dovrebbe essere
coesivo e riunito e non
insieme inizi a tirare queste cose
tutti insieme e diventi molto più pulito
la base di codice è molto più facile
capisci e tendi a diventare grande
urto di prestazioni perché le cose finiscono
fino a dove dovrebbero essere finiscono
su nelle stesse linee della cache non vai
a caccia di puntatori attraverso ad altre cose
si è dichiarato ai pipistrelli di come Hardware
funziona come funziona il sottosistema di memoria e
ne ottieni i benefici così hai fatto
devo rispettare questa località di
riferimento e come la nostra memoria diventa più grande
e più grande non sta migliorando
sul tempo di risposta, quindi è meglio prendere il
modelli giusti per ottenere il giusto tipo di
comportamenti perché il golf quasi tra
avendo una cache completa miss e elaborazione
le istruzioni stanno ricevendo l’ordine per
Metti 500 istruzioni per un errore di cache
circa l’equivalente di 500 istruzioni
con un errore di caduta e cache su un server
lo so, davvero, ottenere queste cose davvero
fa la differenza in realtà
mi urla è che non importa
su quante istruzioni sei
elaborazione non dovrebbe nemmeno essere
pensavo che pensassi quasi oggi
devi pensare in cache
Manca per qualsiasi algoritmo che puoi
quasi iniziare a contare la cache manca due
tipi per quanto tempo ci vorrà fare
qualsiasi insieme di operazioni
quindi siamo venuti a prendere la signora. abbastanza spesso
finiamo anche per pensare
relazioni tra i nostri oggetti questi
piccole linee innocue quando le persone disegnano
cose così classicamente finanziarie là
erano ordini e ordini di persone
disegneremo solo una piccola linea tutto il
l’oro non è una piccola linea, quindi siamo noi
andando pensarci Che ci fa così
perdona un po ‘di quello che ti inchioderà
qui per un secondo andremo a prendere
perché è comune, infatti, questo
la relazione è in realtà due
relazioni tipicamente ci sono offerte e
offre ed è uno-a-molti in questo
caso ma è più che non lo è anche
di solito qualificato sul prezzo in ordine
e in genere Pfeiffer passa attraverso il
esperimento mentale di ragionamento davvero
su una relazione ti dice tanto
e capisci come funzionano le cose ma
è davvero importante non scegliere
qual è la struttura dati che dovresti essere
usando per rappresentare quella linea che è la
cosa veramente importante nella modellazione e
la cosa che rimarrà con te la tua
tutta la carriera, non importa cosa succede in
cambiando hardware e software è il
la struttura dei dati è importante per un set di
caratteristiche per quella relazione
quale struttura dati scegli per dare
tu quelle caratteristiche e non inizia
per avere davvero importanza ho intervistato persone
e ha posto domande molto semplici su
qual è la differenza tra un hash
mappa e una mappa ad albero e avere cose
buttando indietro e anche se non ne hai bisogno
per conoscere i dettagli di implementazione in questi giorni
è come se non ti stessi chiedendo come
implementare una mappa hash o mappatori di trattamento
qual è la differenza che cosa dà
voi quali sono le caratteristiche offerte
dovremmo sapere questo tipo di cose che tu
dovrebbe essere prendere lo strumento giusto per
il lavoro giusto per darti quelli
caratteristiche così davvero fanno amicizia
con le tue strutture dati uno dei
i migliori investimenti che farai nel tuo
carriera e rimarrà con voi per
tutta la tua vita conosci ?
filtri di fioritura si impara su Maps voi
impara sugli alberi tutto quel genere di cose
Ti garantisco se hai 20 anni
nessuno ancora sta programmando i sessanta
anni che roba sarà ancora
utile non andrà via è solo utile
roba che ci tiene tutti in posti di lavoro
interessante come anche come guardiamo
a questo e come lo capiamo io
ha avuto delle ottime battute con cui osare
persone che capiscono la psicologia
intorno a questo e come saltare nel codice
è fantastico ma ci dà solo un modo
pensando a un problema dovresti
documenta come farai qualcosa
usa diversi percorsi nel tuo cervello
ed esplora il problema in un
modo interessante discuterne con altri
le persone discutono per progettare il
i test discutono su come lo codificherete
forse anche fare cose pazzesche come scrivere il
codice in modo imperativo scrivere il
prova in modo funzionale facendo
quei diversi modi di guardare a
problema forse anche loro formali
specifica otterrete qualcosa
molto più succinto, molto più preciso e
fallo lì ma almeno documentalo
e parla con le persone a riguardo e il tuo per
non è sufficiente per questo è davvero
parte importante del fare cose dovremmo
devi collaborare e lavorare
insieme e diventa molto più semplice
soluzioni raffinate e tipo di passaggi
questo è ciò che chiamo l’ operazione ad alta voce
fai solo molto meno errori questo
abbiamo anche bisogno di algoritmi e lo faremo tutti
ho visto se l’ordine di tutte le ragazze se
ti interessano le prestazioni e roba del genere
quello che è veramente interessante è che tu abbia
per sapere che cosa è e questo è tornato a
le relazioni e la cardinalità
e le cose con cui hai a che fare
ma ci sono anche costanti in tutto questo
algoritmi quindi guardiamo molto spesso
ciò che finisce è l’unica cosa
importante bene abbastanza spesso le costanti
sono molto importanti soprattutto per la specie
di dimensioni piccole e moderate di un
costanti possono essere molto Dominante Io abbastanza
spesso vedere un caso quando le persone vanno
questa deve essere una hashmap e questo deve essere
un albero o qualunque cosa e sì bene quanto grande
è un vino che tutti diventano più grandi di
circa 20 perché usare la mappa o l’albero
solo più spesso di un rack intendo che sì
devi mai iterare su di esso sì
tutto il tempo quindi hai scelto quell’albero o
una mappa hash o qualcosa del genere e tu hai
qualcosa che è nell’ordine per circa
20 articoli e li stai iterando tutti
il tempo perché non è in un rack pensare
su queste cose inizia davvero il
moderno e aperto ha detto oh sì, bene che a
l’uomo diventa più grande bene , sai?
dove le loro fini diventeranno più grandi o no
questa è la domanda che devi avere
chiedendo e trovando un bel si scopre che
un sì enorme che dovresti fare
un’altra cosa davvero interessante
cosa intorno a questo mi piace fare non è
basta conoscere l’ordine dell’algoritmo
in realtà lo risolvono attraverso test e
sperimentazione perché abbastanza spesso
la gente pensa il
l’algoritmo che otterranno non lo è
quello che in realtà ottengono così devi
fai quella cosa da arrampicata che devi fare
scrivi l’esperimento che hai finito
ti darebbe davvero e così tanto
due importante concentrarsi su e concentrarsi su
vedi e inizia a misurare davvero la ricerca
questa roba non vorrei solo finire ma il
cardinalità delle relazioni come se
hai mai lavorato con dati davvero buoni
perché le persone che sanno di grandi dimensioni
i set di dati sono ossessionati dal
cardinalità su linee eppure così spesso
solo disegnare scatole e non pensarci
star cos’è cos’è la stella e diventa
davvero molto importante quanti ordini
in un mercato quanti clienti quanti
prodotti quanti film qualunque sia
è come per le persone
queste cose quante volte fanno
guardalo quante volte comprarlo così
la cosa è ma gli algoritmi sono la chiave per
il tempo di servizio così lo sappiamo
il tempo di risposta è il tempo di servizio più il
tempo di latenza che stai aspettando in coda
quindi ottenere il tempo di servizio è morire
davvero importante cosa è veramente
importante per il servizio è il tempo
il tempo è legato all’utilizzo quindi se tu
avere il tempo di servizio che hai metà
utilizzo di qualcosa e quindi immaginare
stai correndo all’ottanta percento
utilizzo e metà del servizio
tempo che conosci fino al quaranta percento
l’utilizzo indovina cosa succede ora –
il tuo tempo di risposta è molto meglio
non è in genere solo la metà buono
è molto meglio di no se sei aperto
90 o 95 percento di utilizzo una nuova metà
probabilmente puoi ottenere un miglioramento di 20 volte
in tempo di risposta quindi basta pensare sapendo
queste cose li stanno mappando
il pasticcio è così importante che penso se c’è
una cosa che faccio in ogni design è
sblocco per ogni occasione possibile per
lotto perché questo è dove tutto il tuo
le prestazioni vinte in genere vengono perché
loro quello che fa è che ti permette di
ammortizzare costi costosi che vanno nel
scrivania che ha preso un viaggio attraverso un altro
macchina che stanno prendendo il grosso della cache
La signorina dove capita di essere che si desidera
per raggruppare quante più cose possibili
quando prendi questi grandi costi lo facciamo
in realtà come non capiamo tutti
andando dall’aria ad essere
in un’auto individuale tempo libero se
stanno andando tutti dal laboratorio di Sam li abbiamo messi
su un autobus li mettiamo su un aereo che è
tutte le cose in cui ne hai messe molte
ossa e posti a sedere e portali lì
dovrebbe essere esattamente lo stesso modo di pensare
il tuo codice e in particolare per questo
dobbiamo pensare all’essere
affondare sincrono sta andando male
noi dobbiamo pensare un sincrono
per tutto perché presto come pensi
un fondo sincrono diventa così facile
ovunque e questo è l’unico esempio
che stai dicendo costosa risorsa I
voglio usarlo più produttori vogliono
mettere alcuni dati in questo costoso
risorsa se tutti vanno a farlo al
stesso tempo prima di tutto sono probabilmente
andando avere mutua esclusione su
questa risorsa quindi dovrò fare
qualcosa e poi dovrai farlo
spunta il tuo turno per entrare in quello
la sezione critica è protetta dal tuo
mutua esclusione quindi se vuoi usarlo
qualcosa e anche io sono solo tre e
c’è una sola unità di tempo in cui una cosa
prendere un’unità di tempo ha intenzione di
prendine due e ne prenderai tre
unità di tempo così nel medio che andando
prendi due unità di tempo e come tuo
i lotti diventano più grandi quindi quattro raffiche di
arrivo del traffico con cui inizi a finire
molto grandi periodi di tempo davvero semplicemente
se metti una struttura in mezzo
che puoi raccogliere il lavoro e poi
qualcosa che l’altro lato di esso è
trascinando tutto quel lavoro verso il basso e metterlo
nel negozio come un singolo conteso
operazione migliorerai molto
utilizzo molto maggiore throughput e
anche una latenza molto migliore che continuo ad ascoltare
più e più volte è un trade-off
tra latenza e cazzate del rendimento
davvero sono cazzate e siamo stati
credendo che questo nel nostro settore per lontano
troppo lungo
qualcuno vuole venire a chattare con me ma
questo posso lavorarvi attraverso la matematica
può funzionare attraverso gli esempi è così
semplice se batti bene e Bochy
è una cosa in tempo reale non offline
processo slowpoke in cui puoi inserirlo
disegni e io amo solo farlo finita
e oltre con il mio mostrando loro quanto sia semplice
è per ottenere questa roba giusto o no
quanto sia semplice la ragione per il
codice e hai fatto le cose giuste e
sono solo schemi semplici come questo
ti permette di farlo se fai così
la linea blu è ciò che si finisce per avere
piuttosto che la linea rossa
il fatto di KeyArena viene notevolmente migliorato
perché non finisci per utilizzare
la risorsa perché si ammortizza il
costo che prende il tuo dime di utilizzo
in ultima analisi, le fai da parte
tutto si satura
se ne carichi abbastanza ma tu
ottenere questa proprietà costante veramente bella
fino al punto di saturazione e anche allora
al punto di saturazione va ancora
al massimo del throughput può e
fa il meglio al baldacchino e tu tendi a
ottenere una progressione lineare, piuttosto
di questa curva J solo ripida dove
tutto va terribilmente male perché è così
un’altra cosa che vogliamo è quando il nostro
i sistemi colpiscono il rendimento massimo non lo facciamo
vogliamo che le ruote cadano, le vogliamo
per continuare a fare il meglio che possono
su bacio e non cadere a pezzi e
progettando per questo in particolare il
botching gift.you c’è quindi ricordatevi questo
l’elaborazione in batch non è solo per offline
rami rami rami orribili in
il nostro codice e un vero problema maggiore che può
essere così semplice e non ci è piaciuto ogni volta
eseguiamo rami nel nostro codice o CPU
gasando lì stanno predicendo dove
puoi andare su quei rami la maggior parte del
ora hanno capito bene e loro lo sono
progredendo in anticipo stanno speculando
in realtà non elaborano le istruzioni
e basta fermarsi perché sono costantemente
cache mancante e vogliono mantenere
facendo progressi il punto di vista di
rapidamente imprevedibile e anche non c’è
solo così tanti rami puoi avere
prima inizia a seppellire un costo che inizi
rallentare da una performance
prospettiva anche tu rallenti molto
dalla comprensione e dalla ragione del tuo
codice vedo molto spesso cose del genere
dove le persone staranno bene con cui ho a che fare
romanzi che davvero non dovresti essere
occuparci del tuo codice come lo siamo noi
siamo passati questo ora è il 2015 che dovremmo
Non essere passando le cose intorno come romanzi
come una sorta di valore a meno che non sia molto
alcuni motivi per come farlo
vuoti sacchi dentro per tutto ma poi
non iniziare a fare scorciatoie come se fosse
vuoto proprio essere vivo prima solo
non ha alcun senso è che è malvagio
non è anche il caso comune così tu
iniziare a ferire il caso comune per cosa
pensi che sia solo un’ottimizzazione
sbarazzarsi di questo tipo di codice sbarazzarsi di
esso
rende il tuo metodo più piccolo ne fa un po ‘
pulitore rendere un po ‘più facile
si levano in piedi su un terreno meno boogie e sono
più veloce quindi è una specie di modello comune
che continua a venire e quindi non ho
il principio di fornitura mi ha sorpreso
compagnia in qualsiasi altro momento è un mezzo
La sorpresa orientale quindi non avere a che fare con
i Knowles non fanno mai oggetti
vuoto imposta tutta quella roba in modo da iniziare
facendo la cosa giusta per tutto il tempo che lui
era a Tony Hoare dice come il nulla
puntatore era il suo errore da un miliardo di dollari
non dovrei fare questo tipo di
I loop di roba sono affascinanti
visto carichi e carichi di statistiche che
ha detto che i nostri programmi probabilmente passano
80% del loro tempo in loop così come noi
scrivere loop conta davvero questa citazione
e mi piace come cavalchi così di nuovo se
nessuno ha mai scritto niente di simile
stai scrivendo blog o libri o
qualsiasi cosa tu abbia iniziato a capire che tu
puoi tornare indietro e puoi rileggere cosa
hai scritto e puoi usarlo
abbreviare e rendere più conciso farlo
più preciso e più facile da leggere
è esattamente lo stesso con il tuo codice
come che se avessi avuto più tempo avevo scritto
di solito una lettera più breve ne ho avute di più
tempo avrei potuto scrivere un più breve di più
conciso
ciclo più elegante quindi torna al tuo
codice abbastanza spesso e farlo perché
inizia davvero la faccenda, così ho detto
avere un L zero in contanti nei nostri processori
possono gestire solo circa 1.500 micro
ops
se non ti va bene, lo sei
sfrattando costantemente cose dal
cache e tirando roba davvero rallenta
tu giù
ancora di più una volta che abbiamo affrontato
che passiamo ad una nuova filiale
tampona 28 ops micro in questa fase solo
rami permessi per un ciclo e no no
ritorni e nessuna eccezione che esce
un ciclo che quelli non possono adattarsi a quelli
devi andare agli altri lati
di cose come molte persone hanno multiple
soprattutto i punti di ritorno dalle funzioni
nel bel mezzo di un ciclo che è male è
male a ragione su di esso è anche male da a
prospettiva delle prestazioni come più
rami in un ciclo che è come il mio odore
un po ‘anche perché lo stai facendo
mantenere il principio di responsabilità unica
il tuo ciclo semplice li rende davvero facili
avere a che fare con
dovresti creare i tuoi loop come se fossero buoni
in effetti questo è quello che mi piace fare
è costantemente tornare indietro e rileggere il tuo
codice perché continui a vedere le cose
vedi bug che vedi dove migliorare
vedi se facciamo la pastella di pietra noi
dovrebbe renderli normali dove lavoriamo
vi ritroverete con la base di codice
è molto più pulito molto più velocemente
più facile da lavorare e molto meno buggato
e così abbiamo queste belle semplici
cose che devono essere componibili così noi
devo pensare nella composizione e per
questa dimensione è davvero importante per Cliff
codice greer un po ‘di tempo fa e lo eravamo
occuparsi di loro nascondono il giusto
metodi per renderli particolarmente veloci
e ha sottolineato che come la maggior parte
i compilatori lavorano è che l’ inlining è il
ottimizzazione tutto il resto è abilitato
inlining quindi prendiamo un metodo se tu
inline in un altro si può srotolare
il ciclo possiamo registrare denaro che possiamo fare
combinando bene possiamo fare ogni sorta di
cose davvero divertenti, ma se non possiamo
in linea è opec non possiamo combinare il
cose insieme e così facendo iniziare
cose piccole che le rendono componibili
funziona molto bene se facciamo tutto
il nostro codice è bello, piccolo e componibile
metodi molto semplici non ti preoccupare
la funzione chiama RDBMS
li indicherò e la funzione
chiamate perse ed è anche molto di più
componibile ho avuto un grande tweet tre sei
nove mesi fa, dove ho fatto un
corso di formazione per alcune persone e io
stava sbattendo questo in piccolo
i metodi li rendono componibili e c’è
che ha attraversato nel fatto un sacco di
questo e reso molto più facile testare e
poi questo ragazzo stava scrivendo la pratica
fallo solo facendo alcuni dei nostri
il codice è 40 o 60 percento più veloce e
c’è molto più facile ragionare
perché abbiamo lasciato davvero il compilatore
mettere le mani adesso e renderlo bello
e pulire il compilatore non può fare molto
con 3 e 400 metodi di linea che non posso
comporli insieme perché sono
OPEX che non sono in linea, devo
pensa a queste cose quindi mantieni le cose
la singola responsabilità quale
dichiarazione una cosa un metodo una cosa
una cosa di prima classe che un modulo pensa
tutto ha uno scopo non multiplo
scopi quindi la comporre molto meglio così
pensiamo di poter creare cose belle da
piccoli oggetti
questo tipo di spinte qui otteniamo
siamo ossessionati dall’orientamento all’oggetto
abbastanza spesso non abbiamo bisogno di oggetti questo
tra una brutta cosa del mondo java ma
davvero vogliamo avere dei grossi tavoli in griglia
di dati e
se la tua tabella di dati è un oggetto cliente
con una serie di riferimenti ai clienti
stai per puntare tutto su tutto
il tempo dice che voglio passare e voglio
per leggere tutte le date di nascita che voglio
passare e voglio cercare chi è
con un certo cognome
tu non vuoi farlo con
gli oggetti pensano in modo diverso così
immagina se ognuno di quei campi fosse
solo in un raro di un dato tipo ora se io
voglio cercare attraverso posso solo eseguire la scansione
giù non è raro non ho tutto il
le intestazioni per gli oggetti sono piacevoli
co-situato in memoria se voglio vedere
l’intero oggetto bene, posso solo andare
attraverso e prendere l’ indice all’interno di quelli
arresta come faccio a camminare giù
li cammineremo con l’indice
quello potrebbe essere fatto con una mosca con questo
tutto si adatta molto meglio alla località
mentre vai avanti ottieni il prefetch
chi ti sta aiutando sta tornando a
quei letti devi pensare ai dati
non pensa a pensare a un codice
dati e questo è uno dei modi in cui lo farai
ottenere molto più prestazioni e molto
può essere appreso qui dalla teoria degli insiemi e
programmazione funzionale quindi se hai fatto
un sacco di orientamento degli oggetti uno dei
modi in cui ti rendi molto meglio
programmatore è andare, impara la teoria degli insiemi
impara a programmare in modo funzionale il bene
impara il programma di logica impara altri modi di
pensando che ci sia molto che puoi portare via
da esso e ci sono alcune cose fantastiche
lì in modo da andare finire qui con un po ‘
test delle prestazioni cosa facciamo cosa
dovremmo fare con le prestazioni
test prima di tutto definisci il tuo
obiettivi di prestazioni che devi avere
qualcosa che stai girando per te
sapere quando hai finito quando va bene
abbastanza spesso la gente dice che voglio farlo
essere più veloce non è utile, voglio
avere X throughput al secondo con il
tempo di risposta di Y o avere un certo
curva di latenza e queste sono le cose
sono importanti così tu li stabilisci
obiettivi da lì puoi stabilire
principi di progettazione quando lavoravamo in aereo
su una delle cose che abbiamo fatto è noi
definito i nostri principi di progettazione che consente
prendi delle decisioni quindi per esempio noi
non avere rifiuti in esecuzione stazionaria
non potevi farlo così scriviamo tutto
del nostro codice scriviamo su un pass che eseguiamo
un profiler che ci dice che ne abbiamo
assegnazione se ce ne liberiamo
ci lavoriamo perché l’assegnazione
causerà GC e GC causerà la latenza
picchi sulla tua risposta
tempi andati così valeva queste cose
solo come fare con esso come si misura
tempo di risposta l’importante è noi
devi farlo con gli istogrammi se usi
significa se usi la deviazione standard
ti stai illudendo e sei tu
completamente sbagliato , probabilmente dovresti esserlo
nel discorso di Gail che è fatto un po ‘
un po ‘ma vediamo alcune cose così
ecco un tipico istogramma di misurazione
il tempo di risposta di una modalità di sistema è
tipo di interessante il caso più comune
in realtà mi dice qualcosa di utile
mediana sì meno utile significa completamente
dannatamente inutile non me lo dice
nulla sul tipico tempo di risposta
nel sistema e non me lo dice
qualcosa su tutte queste cose cattive che è
qui fuori
non usare mezzi per descrivere il tuo
sistemi di cui hai bisogno per caratterizzare il tuo
sistema in un istogramma come questo e questo
è come vedrai i tuoi sistemi
eseguire un altro modo che puoi fare è usare
distribuzioni o percentili quantili
distribuzioni e vedere come i tuoi sistemi
comportandosi agli anni 90 i 99 tre nove
quattro nove cinque e questo è un
tipico tondo che vedrai da a
sistema in più il comportamento è questo
per gentile concessione di Gil da uno dei suoi
i clienti che stavano misurando i loro
sistema sto pensando che questo è quello che siamo
ottenere ma non è naturale quando tu
vedere linee ripide e punte frastagliate come me
il pensiero non è così, a causa di questo
la cosa chiamata animazione coordinata I
consiglia di andare avanti e Google per
coordinato missione e imparate che cosa
significa così e come registriamo questo uso a
strumento come l’ istogramma HDR è là fuori
è open source e fa un ottimo lavoro
e molto economico da usare se ne hai uno
punto di riferimento ci sarà il benchmark macro
è pieno di problemi e insidie
puoi cadere in non scrivere il tuo
micro benchmark a meno che tu non sappia molto
dei venditori JVM molto bene e anche allora
sei specie di pazzo a farlo andare a prendere
qualcosa come il micro benchmark Java
nel cablaggio davvero strumento di griglia
ha anche una buona profilazione
informazioni che vengono con esso pure
quindi scrivi questi test e scrivili o
non tiene traccia delle prestazioni della CPU
personaggi così quello che ho detto su
questi grandi loop e il fatto che tu sia
sfrattando dalla cache 10 come fai
sapere che la CPU può dirti
perché ha tutte le statistiche è il
le statistiche sulla cache mancano i mancati rami
larghezza di banda tutte queste cose e
lo puoi trovare dal CP
i personaggi delle performance ms sono le cose
andare a cercare lì e le prestazioni
il test deve essere parte del continuo
integrazione è qualcosa che dovresti essere
facendo tutto il tempo e correndo tutto il
tempo e sentimento se non si incontra il tuo
obiettivi è anche molto buono per il tram
cose pure e cose di tendenza e
grafici e farti fare il giusto tipo
delle cose quando eravamo al L max abbiamo avuto un
muro di schermi per il nostro continuo
integrazione e molto pensiero è stato il nostro
i numeri delle prestazioni in cui eravamo
grafica tempo di risposta grafica
throughput tra le fatture e simili
se stiamo migliorando il nostro ottenimento
peggio ed è davvero utile per vedere che
e quindi assicurati che questo funzioni bene ma
considera anche tutti i tuoi test di accettazione
adatto per test di performance abbastanza
spesso possono essere e rendere la tua vita un
molto più semplice ma questo è davvero uno
il punto davvero importante è che lo siamo
tipicamente ciechi nei nostri sistemi live noi
ha bisogno di costruire telemetria nella sua
la prima classe che dobbiamo costruire in
da zero in ciò che stiamo facendo
lasciatemi solo ripetere questo punto
dobbiamo costruirlo nella nostra vita
sistemi e farlo da zero
non è un ripensamento se vuoi
i tuoi sistemi per funzionare bene e non essere
sorpreso nella produzione devi
avere telemetria in esso così come facciamo
che bene abbiamo messo i contatori nel nostro codice così
cose come il numero di lunghezze della coda di
numero di eccezioni di utenti concorrenti
transazioni tutto quel genere di cose
scrivili su cose come la mappa della memoria
file in modo da poterli leggere senza
impattare il sistema a tutti senza
usando qualsiasi serratura e alcuni grandi
tecniche per farlo che c’è anche
abbiamo messo alcune di queste cose come aperte
fonte è davvero utile ma anche
catturare l’acquisizione di istogrammi
istogrammi dei tempi di risposta del servizio
tempi di lunghezze della coda come se non lo facessi
sapere qual è il tuo tempo di servizio come fare
sai che l’unità è il tuo problema
è giusto che anche i tuoi servizi stiano prendendo
lungo o hai una distribuzione di
volte così quando torni a tutto ciò
una specie di teoria delle code come la tua
il servizio deterministico è che è Markoviano
esso Erlang e il comportamento potrai iniziare
usando questi modelli e preveggendoti
bisogno di conoscere i modelli che sono
possibile e hai bisogno di adattarsi alla destra
figure in esso e hai bisogno di ottenere il
cose dalla realtà e possiamo farlo
così molto rapidamente in chiusura, dobbiamo
pensa a pulito come non contaminato
ottenere la roba fuori del vostro codice che
non aggiunge valore diretto perché il tuo
responsabilità dei codici
un consiglio se si misura una cosa su a
progetto e ciao gente
lavoro che conta più di ogni altra cosa
altre righe di codice cancellate che lo faranno
guidare comportamenti molto migliori di quasi
qualsiasi altra cosa ottiene il tempo di base del codice
rendere il vostro rappresentante del codice che dovrebbe
essere un vero ritratto del business
problema dovrebbe anche essere vero
ritratto di come usare il sistema se
hai lezioni chiamate cose strane
che non sono legati a qualcosa che sei
farlo male
Lo guardo credo che non dovresti
persino essere documentato che non dovresti avere
commenti nel tuo codice diversi da
riferimenti a documenti o algoritmi o
qualcosa di utile che devi fare
stai facendo il tuo codice sbagliato dovresti
hanno delle belle metodi semplici e pulite che è
trovato da solo ha un senso
e passa il test fuorilegge così
molto spesso scriveremo cose nel codice
questo non ha senso che se tu
l’ho detto ad alta voce a qualcun altro che avresti
ridere sarebbe imbarazzante, quindi pensa
dice queste cose ad alta voce, Nord
lo insegue ma ha una papera di gomma
la sua scrivania ma dice cose che mi piacerebbe
anche se non stai parlando con un altro
persona, ma soprattutto misura e
non indovinare se vuoi averlo
prestazioni che devi misurare e non fare
indovina e ti lascerò con una specie di
citazione interessante dalla legge Lear loro
ha inventato il jet Lear che ha detto se fosse così
sembra che volerà bene e trovo
è così vero per il codice che puoi guardare
basi di codice e quasi saprai se
si esibiranno o se lo sono
sarà buggato e se c’è una specie di
ama l’ attenzione ai dettagli che puoi
vedere se è pulito e ogni volta che lo è
non e questo è penso che sia lo stesso
cosa con aereo perché esattamente il
lo stesso tipo di pensiero va in quello
l’aereo perfetto non è quello che tu
puoi aggiungere più cose ad esso è quello che
Non c’è più niente si può togliere
dovrebbe essere lo stesso con il tuo codice base
quando hai capito bene e io non lo farò
finire penso che potremmo avere tempo
per un secondo o circa
tu

Please follow and like us: