Press "Enter" to skip to content

GOTO 2016 • Using Modern C++ In Anger • Todd Montgomery


quindi parleremo di come bar C ++
andrà oltre ciò che lo usa a
tipo sensibile non molto banale con latenza
di applicazione cosa tende a fare
ed è tutte le lezioni apprese un po ‘
un po ‘di me mi chiamo Bob Montgomery
cucinato durante il CTO del 29 West
facendo un po ‘ di messaggistica ad alte prestazioni
auto da informatica nel 2010 probabilmente per
l’anno scorso ho fatto consulenza e
Aaron è in realtà uno di quei pezzi di
consulente quindi alcuni andranno qui
NC + possibile innesco di quale area è a
piccolo background sul tipo di
ambiente che sembra e lo faremo
parlare di ciò che costituisce moderno
segnala che in realtà è un termine per questo
Sono madre lo sviluppatore Scott Meyer e
parleremo di come è stato adottato in
Aaron e le lezioni che abbiamo imparato e poi
una sorta di ciò che è prossimo
così Aaron e C ++ Aaron cercano di fornire
il loro trasporto di messaggistica davvero moderno
in modo da sapere pensare ai protocolli
che abbiamo là fuori che lo sono
per lo più utilizzato nella maggior parte delle applicazioni che usiamo
cose come il DCP se lo stiamo facendo
Telecom potremmo usare cose come setp
e alcuni altri protocolli basati e se
stiamo facendo qualcosa in più
sensibile alla latenza possiamo usare un vasto
serie di protocolli diversi
20ms a condizione di conoscerne alcuni
ma ci sono altri venditori che hanno
fornito loro tipicamente il MTL
conosci anime con quelle che conosci
molti altri e così tanti
le cose che sono in qualche modo ereditarie
che quei protocolli e il modo in cui
funzionano è che sono effettivamente costruiti
sulla maggior parte della tecnologia che nel migliore dei casi è un
poco più di
anni così approcci moderni hanno
cambiato drasticamente in termini di sai
fondamentalmente l’architettura delle nostre CPU
come i sistemi funzionano fondamentalmente in modo tale da adottare a
un piccolo approccio moderno è davvero ciò che
Aaron cerca di farlo è molto diverso
architettura rispetto alla maggior parte degli altri
implementazioni quindi la prima cosa è
sai di essere uno che è guardato
messaggistica prima di un gran numero di anni
la maggior parte dei prodotti con cui sei stato caricato
caratteristiche nel complesso ed è semplicemente
solo non abbastanza veloce sai se lo sei
le tecnologie di trading non lo sai
sai cosa vanno bene , sono meglio di
erano ma da dove potrebbero essere
c’è ancora un bel po ‘di distanza e
non si tratta solo di bassa latenza è
anche non prevedibile latenza e scusa
è un po ‘ tagliato , quindi non è solo
quella latenza è bassa è quella latenza
prevedibile a tutti i percentili
o quanti ne puoi ottenere ed è anche
non semplicemente per il fatto di conoscere l’essere
prevedibile e bassa latenza quando c’è
quasi mai sta funzionando
quel sistema così viviamo in un mondo che
è fondamentalmente multi tutto multi-core
multi cloud socket e abbiamo un vasto
serie di altri tipi di trasporti che
abbiamo bisogno di scappare sapete IP IPC ma
abbiamo anche cose come minivan già
fatto altri che stanno arrivando così semplicemente
ignorando quelli che non li trattano come
i cittadini di prima classe non aiutano
giusto così Aaron cerca di prenderlo come un
approccio quindi la squadra è me stesso Martin
Thompson un Richard Warburg che aveva
ha lavorato su questo per circa gli ultimi due
anni guardano oltre due anni dal nebbioso
la messaggistica prospettica è abbastanza semplice
Impala sicura che abbia abbonati
collegati funzionano su una sorta di
canale e alla fine hanno anche
sogni all’interno della catena e abbiamo preso il
punto di vista che non volevamo avere un
nuovo framework che non volevamo creare
qualcosa come Jan che sai 3.0
comunque, quindi vogliamo fare qualcosa
che era molto lavoro ma elaborato
qualcosa che era molto facile da
integrare e ha fornito il marchio
astrazioni che possono essere le applicazioni
li ha costruiti e da un design componibile
prospettiva volevamo qualcosa fosse
mese più vicino invece di due a
sistema di messaggistica molto più come me
menzionato un trasporto di messaggistica così
a meno che non sia il trasporto di livello 4 da
flussi di messaggi orientati che ha effettivamente
alcune complicazioni che volevamo
fondamentalmente hanno queste cinque proprietà
che fanno parte dello strato esterno 4
connessione di servizi di trasporto o qualsiasi
affidabilità di comunicazione locale alla ricerca
per uno di quei sistemi di messaggistica è a
meglio una preoccupazione di seconda classe e in più
casi di controllo della congestione ed evitamento
alcune situazioni che vuoi che tu non faccia
quindi vuoi essere fondamentalmente qualcosa
che può essere disattivata qualsiasi idea come me
accennato è un tutto bene così tu
semplicemente non hai un singolo editore o un
abbonato al servizio singolo che hai lì
qualsiasi richiesta ad alcuni editori che sono
molto attivo alcuni abbonati sono molto
attivo e vuoi anche molti canali
quindi abbiamo iniziato a trasmettere l’idea di
Java perché volevamo qualcosa che noi
potrebbe scorrere e evolvere molto molto
rapidamente e così siamo venuti all’inizio
con una serie di principi di progettazione aiutati
noi fondamentalmente decidiamo se ne avevamo due
cose diverse
quale scegliere e così questi sono
ordine di priorità di prima priorità spazzatura
la primavera era in esecuzione stazionaria
qualcosa che sai per Java non è nuovo
se stai facendo qualcosa con la latenza
ma per la maggior parte la comunità Java non lo è
qualcosa che è molto più preoccupato
la magia intelligente è fondamentalmente in grado di fare
alto throughput un collegamento allo stesso tempo
Algoritmi sinuosi nel messaggio
e originariamente usato per guardare questo
blocco albero ma abbiamo deciso che potremmo voi
aspetta che sia cambiato, no, sto camminando
in casi eccezionali applicare la sigaretta
il principio preferisce evitare lo stato maturo
copie native inutili queste sono
questi diversi principi in realtà
ci ha aiutato a quando somministrato una figura scelta
fuori quale sarà il migliore lo fa
fondamentalmente ci ha portato a credere in ogni scelta
entrerebbe in uno di questi e ci lascia
scriverli ciò comporta anche sulla
non solo il lavoro nel lato C ++
lavoro abbiamo la capacità di fondamentalmente
guarda cose diverse e vieni fuori
con quale sarebbe il modo migliore di
gestendo l’architettura II quello che è Aaron
fare sta replicando un log da a
editore per un insieme di abbonati va bene
lo stesso tipo di idee Kafka e poi tu sei
replicando la legge come illeso
Aaron è un po ‘diverso e poi
significa davvero replicare il log
replicando ogni singola cosa incluso
il protocollo a cui è associato ottenere
che registrano verso l’altro lato o
altre parti quindi se guardiamo a noi
guarda che cosa chiamiamo il log
buffer che sta impostando sul publisher
deve essere un abbonato e da
estensione abbiamo anche altri editori
chi ha bisogno di portarli da altri
abbonati quindi abbiamo bisogno di avere il
possibilità di andare in entrambe le direzioni così
farlo bisogna mettere qualcosa nel
nel mezzo devi avere una sorta di
dati che consentono al mittente di inviare a
ricevitore e quel supporto potrebbero essere UDP e
PCIe tutti i tipi di tecnologie diverse
quindi l’idea di avere i media essere
qualcosa che è collegabile era
importante per noi e come ho detto che sei
semplicemente replicando quello stesso buffer di registro o
che accedono l’abbonato che si trova su
la cultura ma per farlo hai un
molte diverse pulizie per farlo
abbiamo diviso quella casa in
qualcosa chiamato un conduttore che
il conduttore prende eventi e
comandi di amministrazione e fondamentalmente
non la si conosce la somministrazione di
quei buffer e quindi possiamo avvolgere questo
nei diversi pezzi o
architettonico in pezzi che vediamo
il cliente è ciò con cui si integra
l’applicazione e l’ autista fanno il cattivo
lavoro di invio di cose per la rete
e ha anche il suo che conosci
amministrazione e tutto il resto è
in questo è fondamentalmente l’architettura
e se guardi il codice che abbiamo
anche credere che dovresti essere in grado di
guarda il codice e vedi i nomi di
classi nomi di componenti che si adattano
in questo modo tutti i componenti hanno
questi nomi quindi potrebbero essercene alcuni
conoscere un po ‘ di informazioni che è
chiarendo qui come abbiamo cliente
direttore d’orchestra e conduttore, ma quelli
si trovano che sai dovrebbe darti
un’idea di ciò che sono il loro lavoro
quello che fanno è fondamentalmente Aaron
ma come si sente l’ autobus in forma in questo
ammissione che abbiamo fatto questo in Java
prima e che siamo entrati in modo iterativo
sul design e sul lavoro che abbiamo anche
integrato nel design in C ++ ma
abbiamo iniziato facendo questo prendendo il
architettura e C ++ vanno sul client
lato e in fondo è così
dà la possibilità di avere un C ++
applicazione che parla del lavoro
applicazione o applicazione java per parlare
a C ++ o C ++ i discorsi a C ++ i media
il driver in sé che conosci può essere solo un lavoro
fondamentalmente e questo è ciò che è attualmente
a disposizione
il driver e stesso è attualmente lavoro così
la prima cosa è non farsi prendere dal panico va bene solo
perché è Java non significa che sia lento
torna a giocare velocemente ma lo fanno
intenzionalmente piano per fare una versione C ++
dell’effetto driver è in Sigma funziona
ed è uno dei nostri progetti collaterali così per
il momento non essere troppo scoraggiato dal
il fatto che C colleghi che non è tutto il C ++
il modo in cui la tua applicazione
è semplicemente scrivere nella memoria condivisa
leggendo dalla memoria condivisa se sta andando
a C ++ e se sta andando IPC il driver
è solo lì è un’amministrazione
strumento sta creando i file che sta rimuovendo
loro è per orchestrare le cose ma
non è ancora nel percorso del messaggio
quindi ciò che costituisce il C ++ moderno così lo faremo
parlare di cosa significhi veramente il
la prima cosa è in tutto questo
cosa proverò non la partita va bene lo farò
prova che C ++ prova non il migliore Java
prova a non modellare le altre lingue
sarà dura qualcosa di veramente difficile
ma sto andando provare a fare questo si sa
quindi la prima cosa è Mauro Zucca più è
in pratica Scott – ragazzo questo è un
libro fantastico che tu quanti di voi
conosci questo libro va bene se tu se lo usi
C ++ e stai pensando di usarne
delle nuove funzionalità e C ++ 11 da ottenere
questo libro ha davvero molto bene
esempi in molti di voi chiarimenti
e quando pensi al C ++ moderno C ++
il che significa fondamentalmente che è uguale a plus
11 e poi questo è il libro indietro
non è un riferimento
è più di un qui è ciò che questo significa
ecco come usarlo ecco come non farlo
usalo che è altrettanto importante qui
come pensare in modo tutto ciò che è molto
molto bene
Samarra c ++ se dovessi riassumere cosa
il moderno C ++ significa davvero è una risorsa
la proprietà nella vita è fatta molto
più esplicito se anche è incapsulato
molto molto meglio questo è il tipo di
differenza di famiglia tra fondamentalmente C ++
98 e precedenti è C ++ 11 in tutto il
anni tra questi due standard di un
sacco era stato appreso in termini di come
fondamentalmente guarda alla durata dell’oggetto
cose di proprietà delle risorse come quella a
molte delle migliori pratiche sono state completate
e codificato in idiomi con in C ++ 11
quindi questa è la prima cosa degli idiomi
qui è coinvolto il primo idioma
è l’acquisizione di risorse è
inizializzazione nostra AII e questo è
permeato in tutta la biblioteca
e la lingua qui è solo una coppia
un sacco di guardia è un grande meccanismo dove quando
è stato accentuato in cui la lobby richiede un
bloccare e quando viene distrutto
rilascia un lucchetto in modo da poterlo mettere sul
impilare mettere dove ti piace e
ovunque sia costruito, acquisisce a
bloccare e quando viene distrutto
lo rilascia giusto che ha una sorta di a
sguardo profondo ora questo non è nuovo
è stato intorno poiché in realtà all’inizio
Anni ’90 se guardi un po ‘ del lavoro
è stato fatto da uomini malvagi e altri voi
sanno che stavano usando guardie per le serrature
e cose come questa per molto tempo ma
averli come parte della libreria preso
molto tempo non è stato difficile fare così tanto
come era solo ci è voluto un po ‘ per
quel permanente a quel livello indossando
ciò ha influenzato la lingua stessa in modo univoco
puntatore un altro puntatore intelligente e
tutti quelli di cui parleremo qui
un minuto
tutti questi sono interessati allo scopo
quando hai l’ acquisizione di ricerca
è l’inizializzazione che hai creato
conosci un oggetto unico quando sei tu
sapere fondamentalmente entra in campo e quando
va oltre lo scopo è tutto male
rilasciato quello sarebbe quello che ti serve
l’angolo va per un pezzo unico quindi
non c’è condivisione e ci porta a
la seconda parte che di puntatori intelligenti
puntatori intelligenti hanno un grande impatto
il modo in cui pensi di sapere
proprietà delle risorse per tutta la vita
e ecco i tre che ti hanno inventato
devi sapere condividere l’angolo che
fondamentalmente è un oggetto che e il
numero di riferimento ma è più di questo
e se hai familiarità con il puntatore automatico
è un po ‘ come su un puntatore e tipo
di non significa che questo oggetto è
condiviso in qualche modo ci saranno due a
almeno due ne conosci le connessioni
qualsiasi cosa in cima, quindi la proprietà che cos’è
la proprietà che è un aggregato
Proprietà
è giusto se ne hai due diversi
i proprietari si può solo reclamare l’oggetto
di entrambi vanno via
in pratica codifica automaticamente
conteggio dei riferimenti ed è molto utile
per quello scopo puoi spostare una condivisione
l’angolo è possibile copiare un puntatore di camicia è
copiare sembrare come bene significa incrementare il
conteggio dei riferimenti e decremento quando
hai finito con le cose copia come
così quando usi qualcosa del genere
SharePoint ha quella semantica che
non molto efficacemente in un molto
accedere in modo efficiente è lo sai
scusa molto efficiente
puntatore unico significa che stai andando
avere esattamente un proprietario di questo oggetto
proprio così impedisce la copia che impedisce
conosci altre cose, ma puoi esserlo
spostato a destra quindi questo è potuto trovare quelli
pratiche deboli puntatore debole pianificatore è
creato da SharePoint in modo che tu possa
creare un morbido senza miracoli è efficace
va bene per fare una dichiarazione molto generale
è effettivamente come un riferimento morbido
in qualcosa di simile ma è un po ‘
diverso puoi usarlo allo stesso modo
e lei avrebbe normalmente pensare se
stai pensando bene, condividilo
esso
il conteggio dei riferimenti va bene
senso se puntatore debole è di tipo
ok riferimento morbido cosa succede se io
avere qualcosa di non banale come
quello va bene come faccio io come faccio?
lo gestiamo
bene si scopre che questo non è in realtà
un brutto posto per essere in alcune lingue voi
sapere sono costruiti in questo modo automatico
il conteggio dei riferimenti per noi ad esempio in
altre cose non è una brutta cosa
limitare le tue cose in una banca di design dà
voi alcune ottime idee parleremo a
un po ‘di quel tipo di lezioni
imparato ma efficacemente puntiamo
lì così puoi creare il ciclico forse
Sarò qui per me con il gioco
motori ok ecco una domanda in un gioco
motore potresti avere un oggetto fisico
questo oggetto di fisica potrebbe anche
romanticami perché a volte solo
trame diverse possono avere anche fisica
il pubblico non mi chiede perché penso solo
a volte ha fatto quello che si ottiene un sacco di
i tempi nei motori di gioco sono molto ciclici
grafico delle dipendenze ok minuti sono
principalmente fatto e vedere come nel mondo
si occupano dei cicli che rompono
in modo che quando si ha a realtà
accesso qualcosa del genere lo si fa
attraverso qualche intermediario un sacco di volte
è uno sguardo alle cose quindi non lo fai
accedo solo a un puntatore a cui accedi
aggiornato ad esempio solo un debole
il puntatore è come questo puntatore debole che è
lì e se il puntatore di condivisione ti allontana
prova ad accedere al puntatore debole che dice
non posso fare quell’economia in modo tale che la tecnica
ha influenzato per esempio questo design
Ho visto in prima persona e abbastanza complesso
grafici in dipendenze che sono modellati
con quello è abbastanza delicato quindi non lo è
non è affatto un ostacolo per C ++ 11
introdotto lambda e oggetti funzionali
sai che sono gentili , fanno cose
molto puliti possono anche essere un po ‘
difficili sono molto potenti da usare e
semplicemente puliscono il codice abbastanza
è stato detto che le noci non sono realmente
parlare troppo di loro a
La fumetteria comica è atomica
a è una libreria portatile che ti permette
fare qualcosa di molto interessante economico
cose con esso ed ecco un esempio
Supponiamo che tu abbia un booleano che vuoi
fai operazioni atomiche su quello che sei booleano
posso semplicemente dire che è un tipico
titolo che è allora anziché comune
bandiera atomico è anche un altro esempio che
ha altri test e set e alcuni
altre cose su di esso che sono solo di più
conveniente in altre parole c’è a
specializzazione di stanza ancora comune ma
si dispone di tutti i tipi di quelle diverse si
può fare tranne quelli di cui hai veramente bisogno
fare volte per cui v’è un foro che
parleremo di qui, così continua
scusa per le cuffie qui gli idiomi
puntatori intelligenti atterrano Atomics ma noi
ha anche un supporto alle minacce quindi è molto
annoying per molti anni hanno POSIX
circonda ma non li ha come prima classe
i cittadini nella lingua bene ora
sono così qualunque sia la tua minaccia
avere sotto di voi ha accesso al
indice di thread delle testine standard della libreria
promette il futuro praticamente tutto
normalmente penseresti in un moderno
tipo di impostare ora spostare la costruzione
l’assegnazione è un’altra parte importante di C ++ 11
il mezzo in pratica è quanti di voi
familiarità con le cose dei costruttori di copie
così va bene che gli istruttori di Luke no
devi copiare basta spostare quello che hai
da uno all’altro ogni trasferimento di
la proprietà è così che viene
torna a cose come conosci il piccolo
puntatori e tutto il resto e idea di
la proprietà nella vita ha molto da fare
con la costruzione del movimento e l’assegnazione
parleremo un po ‘delle lezioni
imparato da questo e tu sai dentro
il C ++ conosci le cose della comunità
sai che le catene di strumenti sono sempre state
coinvolto sai che potrebbe aver preso
da tempo ne abbiamo alcuni in realtà
molto bello da usare catene di strumenti che conosci
vedere fare è bello , può essere usato molto
grandi progetti con molto buon effetto si
sai che potrebbe non piacerti la sintassi o te
potrebbe piacere questo contesto a seconda di te
sapere come appare, ma è utile
prova la voce mock e anche II che sono
là fuori come vede la linea da JetBrains
che uso molto pesantemente sono un grande Emacs
il ragazzo ha usato Emacs per peso e questo
mi ci sono voluti davvero leoni marini per me
guarda un ID reale quando ho usato Eclipse
Io in realtà voglio dire che potrei usarlo è
solo non volevo e quindi lo sai
preso qualcosa come leoni marini che è un
molto meglio integrato molto più pulito
si sa per me di saltare davvero e si
sapere in realtà smettere di usare Emacs per la maggior parte
Sviluppo C e C ++ quindi quanti di voi
visto che va bene se ce l’hai e tu sei
fare qualcosa con C o C ++ basta prendere
uno sguardo a te sai che ti siedi una coppia
volte paga da solo
Ti darò solo altre cose
come la calma automatica non è così ok
la prima cosa se usi la comunicazione automatica
non trovarlo così che cosa ti voglio
fare e poi farti sapere per
esempio quindi come fa Erin ad adottare questi C ++
moderno modo C ++ di fare bene le cose
la prima cosa è che sai condividere i puntatori
hai bisogno di indicazioni laggiù fino in fondo
attraverso il codice reale quindi ecco solo a
bene ecco solo un esempio se chiami
qualcosa come Annan e ti connetti
quale è l’idea di avere effettivamente il
oggetto è ora possibile aggiungere pubblicazioni e
e abbonamenti a cui torni a
condividi il puntatore dell’errore, quindi l’idea di
l’ EPI ti restituisce già
articolo scartato che dice ecco come
devi usarlo come riferimento
calendario che è abbastanza comodo proprio così
questo è che è la formazione è il modo in cui
questo è fatto in realtà anche questo riguarda
a cose come la pubblicazione hai avuto un
pubblicazione, quindi prova a trovarlo
una api non bloccante, quindi aggiungila se loro
ritorno immediatamente ma un problema Albany
si restituisce un’idea che si può quindi
trovalo e darti un puntatore di condivisione
questo è intorno all’intero EPI e
è usato internamente così è molto
efficiente significa anche che quando a
la pubblicazione dà per scopo
esempio qui una volta l’avresti lasciato
portata in cui la pubblicazione è chiusa
la versione Java è esplicita
chiudi ma la pubblicazione deve fare se
per gli sviluppatori Java questo è doloroso
perché è qualcosa che non sono
fino ad ora puoi mettere un pulitore e
altre cose collegate ad esso e andrà
via qualche volta ma sai se sei dentro
un ambiente in cui vuoi sapere
quando le cose accadono e controllarle
devi farlo esplicitamente è una specie di
bello averli
questo tipo di proprietà nel
tipo di vita che conosci incorporato nel
linguaggio un po ‘più vicino al ritardo
oggetti di istruzione ce ne sono una coppia
diversi modi per specificare i callback
e cose del genere, quindi avere questo è un
solo un lambda che è nel passato nel
nuovo gestore di sottoscrizioni, quindi quando un nuovo
l’abbonamento è visto chiama questo
callback e nel codice incluso lì
rende le cose un po ‘più semplici
invece di specificare conosci il vecchio
interrompere l’oggetto funzione facendo qualcosa dentro
il supporto per la classe e il thread dell’oggetto è
emettere thread standard ora più uguali
più 11 e sugli sviluppatori lo diranno
Lo sto facendo esattamente nel modo sbagliato
in realtà non sta creando un nuovo thread
dovresti farlo con un exec
errore o qualcosa del genere a volte
che funziona a volte non è questo
solo un esempio sai dove puoi
avere una discussione specifica quando eseguire una X
proprio con il lambda sai quando
va fuori campo si pulisce perché
è chiuso cose del genere e anche
solo un esempio di Al Akbar Al Akbar
guarderei con quiring quel mutex che
mutex ricorsivamente con Interscope e
sbarazzarsi di esso quando è così che è giusto
un paio di esempi quindi è fondamentalmente
sai permeato attraverso gli idiomi
e tutto il resto che lo elencherà
abbiamo guardato è stato davvero lì così
sai che le lezioni sono state apprese
è un po ‘la regola soddisfare ciò che volevo
per parlare davvero dell’ultimo anno così
sai che guardiamo questa lista di cose
pensi che abbiamo imparato molto da cosa
tipo di cose pensi che siamo
bene doloroso, la prima cosa è che dobbiamo
tipo di dare un’idea che tu sai
queste tre prime cose stanno andando
di avere un profondo impatto lambda destra
alcuni oggetti funzione è davvero gentile
di zucchero sintattico che va via ma è così
in realtà ne hai qualcuno che conosci
effetti chiarificanti ma pensate
cose come Atomics va bene
ovviamente le minacce di supporto alle discussioni
probabilmente un po ‘ più pulito ma non lo fa
avere molto
metti in basso il compito di distruggere le mosse
latenza sensibile così parte di quello può
avere un impatto catena di pedaggio quando io
posso dirti che noi vediamo che facciamo usare
Google Tasks usiamo Google finto sai
per assicurarci che stiamo facendo le cose
in modo appropriato per fare test unitari facciamo
basta iniziare giù questa lista prima questi
tre non possono essere smembrati
tutti hanno qualcosa a che fare con uno
un altro
così è l’allocazione dello stack di allocazione dello stack
un grande e la cosa che ti dirò
su alcuni o puntatori è cedere a
la tua rabbia verso i puntatori intelligenti non prova
combatterlo bene
non modellare il tuo pensiero su cosa
faresti normalmente in altre lingue
e quindi utilizzare i puntatori intelligenti per questo
perché ti stai tormentando
cercando di fare ciò che faresti normalmente
così come stavamo facendo qui in C ++ che abbiamo avuto
qui in Java su cui è stato eseguito l’iterazione
stavamo lavorando e volevamo prendere
C ++ e appena versato lo si potrebbe fare
ma come funziona la proprietà e cosa
succede con qualsiasi ciclo e come funziona
che come sai che vieni?
ma una volta che arrivi alla rabbia
in realtà esci con qualcosa
che è molto più pulito in modo da iniziare
a guardarlo e dire che questi sono i
strumenti che ho e vediamo cosa
succede che noti un paio di cose
così come sarebbe stato fatto
c’è un sacco di accoppiamento esplicito
è lì ed è esplicito perché
hai un punto di condivisione che hai ottenuto
indica che sei nell’angolo della settimana come fanno
interagire se hai una giacca da moto
a volte una condivisione ma è una specie di
unico perché è un posto in cui è
dovresti essere in qualche modo tenuto in giro
come funziona grazie rende un?
accoppiare il tuo esplicito perché non lo è
solo che c’è un riferimento da qui
a qui vuol dire che c’è questo tipo
di riferimento da qui a qui che è
una cosa molto diversa pensa a questo
lo rende lo rende in modo da poter
vedi oh sai cosa si questo là
non è un posto dove questo è di proprietà
SharePoint è probabilmente la cosa giusta
o è davvero la cosa giusta perché
davvero non dovrebbe esserci solo un posto
dove è controllato lo scooping è anche a
davvero bello guardare perché è
a questo riguardo è esplicito l’ avere così
dove sai qual è lo scopo di un
l’oggetto è in grado di portare giù pad per
ripulire e sbarazzarsi di alcune cose
non si ha realmente bisogno di preoccuparsi
perché sai qual è lo scopo esplicito
sai che tutto è stato creato sai?
quello che viene distrutto così l’ho detto con
un badge, ma ho intenzione di e corrisponderà
ogni altra lingua che non ha
impilare lo stack in modo da non impilare
Assegnazione delle colline ogni volta che parli
altri designer di lingue e tu dici perché
la tua lingua non fornisce stack
assegnazione ti danno molte scuse io
voglio dire che queste sono davvero scuse
vedrai le cose come noi
hai un’analisi dello scape sai cosa
analisi di ology di analisi di fuga
ritorna
sì , è sempre gate
ritorna ci sono tanti modi per sconfiggere
conosci l’analisi di fuga che prendiamo
uno sguardo ad andare e analisi di fuga c’è
un vecchio Ogden continua a farsi consegnare
su quanti modi in cui puoi essere
sconfitto in altre parole come e
qualcosa perde e non può essere fondamentalmente
mettere in pila altri tipi di valore di cose
non hai bisogno di impilare ognuno di voi
avere dei tipi di valore sono come dire che io
non ho bisogno di un’arancia perché ho un
mela solo perché tu hai un uso
non significa che tu abbia il meccanismo così
mi fa venir voglia di fare questo passo ok
la posizione è così utile perché non lo fai
devo effettivamente allocarlo anche lo è
utile perché è morto calcola dal
compilatore
è quello che vogliamo che lo vogliamo
non ci sono dati dipendenti da solo non c’è
nient’altro che è coinvolto in ciò
sa dove sia
può capirlo a tempo di compilazione così
questo non ti aiuta nel modo giusto
saltare l’analisi se viene sconfitto bene
indovina cosa non è nella pila giusta
ok questo è un uso di allocazione dello stack
non è il meccanismo dello stack
allocazione che ti dà tutto l’ altro
benefici che mancano molto al suo nucleo
questo giusto quando non lo hai tu
mi manca davvero molto soprattutto se
stai facendo tutto ciò che deve essere
veloce
okay e io sono modellato da quella lista
non penseremo che sia in ordine
Oh
ti premiamo per spostare la costruzione
l’incarico è in realtà uno di quelli
aree che è estremamente difficile e il
consiglio che io dò qui a volte tu
solo non voglio muoverlo bene
a volte davvero non vuoi usare un
loop o un operatore di assegnazione di spostamento e
la ragione qui è coperta dalla morte e
Ho intenzione di riassumere questo in un molto
modo povero per te ne sai un sacco di cose diverse
parla di muovere i costruttori I
non usarli e spostare i costruttori di
perché si vuole usarli essenzialmente
è molto più di quanto pensi tu
concetto di muovere i costruttori e muoversi
gli operatori di assegnamento in realtà hanno un molto
significato più profondo di semplicemente
fornendo me con questo meccanismo solo
come l’allocazione dello stack è usata in molti
di modi diversi ha anche un molto
profondo impatto sul linguaggio stesso così
la prima cosa è che tu sai se lo sei
pensando di usarlo pensa solo
un secondo implica ciò che implica
stai spostando un oggetto da sostituire
un altro che potrebbe non essere quello che vuoi tu
a volte spesso è meglio copiare se lo sei
fare qualcosa dove lo scopo di cosa
devi sostituire sta praticamente andando
per andare fuori da solo
potresti anche copiarlo ok allora –
quello che sai è piuttosto interessante
modo di pensare al modo in cui
le ottimizzazioni interagiscono tra loro
quando usi un istruttore MOOC puoi farlo
capire in modo efficace il compilatore
esagerazione lorda
So cosa voglio fare qui, quindi non farlo
sai fare X o Y e qualche volta xey
potrebbe essere davvero cose buone così
c’è in realtà il modo in cui questo è
potrebbe trovare in quello standard c’è il
regola del tre la regola del cinque nel
regola dello zero che fondamentalmente ha il
interazione di diversi istruttori
istruttori di fumetti istruttori MOOC e
operatori di assegnazione e tutto il resto
loro ti danno certe regole che io no
pensi di aver bisogno di andare fino a quel punto
a una sorta di capire cosa fare se si
fai ancora una cosa se ti credi
è necessario spostare l’ oggetto perché è pesante
peso ma è necessario avere fondamentalmente
quello dichiara da qualche altra parte perché vengono
a questo da un livello più alto per un minuto
cosa ti sta spingendo a conoscere l’esercizio
di dover prendere lo stato interno di
questo oggetto e spostalo da qualche altra parte
potresti pensare che ci sia un migliore
soluzione per questo ti do una ragione
perché all’interno di Aaron uno dei
le cose in cui siamo entrati erano le capacità
per scorrere su un insieme di immagini o
replica dei buffer di blocco e noi
era originariamente mantenere questo array
usato dai costruttori di mosse lo faremmo
basta passare da un anello a quello successivo
gli oggetti stessi erano giusti
sovrapposizioni non c’era la proprietà di loro
o non ha bisogno di essere potrebbe essere
copiato liberamente così facendo un po ‘di micro
benchmark risultò anziché
spostandoli che ce ne sono altri
le ottimizzazioni che ci darebbero dentro
meglio copiare e quello era guardando
a esso e solo seduto lì a pensare
Perché queste devono essere in movimento sono
solo sovrapporre i ricordi non lo sono
in realtà possedere tutto ciò che potevano andare
via in pila quindi come ottengono come
vengono gestiti ma il più grande
la lezione che abbiamo imparato è stata che a volte
le funzionalità linguistiche non sono state create per il
le cose che devi fare in piedi un momento di
esempio quindi ci ha portato a pensare
questo qualcuno conosce questo riferimento dal
come qualcuno vede un tizio di film
okay, io sono una grande architettura geek
pensare che guarda guarda di nuovo e una sorta di
l’architettura i pezzi C ++ che conosci
i pezzi del cliente qui interagiscono
con il driver multimediale a questo livello
il che significa che questi sono classificati e
buffer di trasmissione memoria condivisa e
queste sono offerte registrate che sono condivise
memoria quindi sai che li abbiamo avuti
diverse strutture di dati che operano
sulla memoria condivisa che doveva essere ordinata
lavorare insieme ora molto rapidamente che cosa
questo Erin replica un persistente
blocca come funziona così bene che ha a
file e funziona su quel file da
mettere i messaggi in cerchiamo di rallentarlo
aumenta la storia quindi scrive il
messaggio quindi i nostri diritti al cielo in
quell’ordine specifico nella memoria che abbiamo posto
queste cose con più tipi di
termini che conosci la zona
di cui abbiamo appena parlato con i metadati
e persino registrare i metadati che tutti hanno
operazioni di memoria atomiche e ordinate
per così umano grazie a Tom e questo è
ti serve proprio lì dentro, giusto cosa
posso vedere cosa peggio di così abbiamo
il concetto di una posizione all’interno della legge
che fondamentalmente hai bisogno di un
rivendicazione di una lotta con l’industria il
editori centri ricevitori e
tutti gli abbonati mantengono i contatori di posizione
in memoria la loro chiave per il controllo del flusso e
monitorando i loro pezzi di memoria condivisa
che hanno un ordine per loro c’è
operazioni atomiche su quello che c’è anche
parola sai semantica ordine che sono
attaccato a loro così pensi che Stan si sia alzato
atomico dappertutto bene
guardando invece di prodotti chimici comuni
sfida la prima dimensione e il layout è
lo stesso tra Java e C è il
lo stesso da diversi compilatori C okay in
i modelli di memoria C ++ 11 in Java C ++
11 ha effettivamente memoria quindi cosa fa
Assomiglia a
bene si scopre che le dimensioni contano ok io sono un
ragazzo grosso – a volte mi sento così
e fondamentalmente le dimensioni contano in una coppia
diversi modi non erano atomici
progettato per accesso alla memoria arbitraria così
Non si può dire qualcosa come voglio
dividere un fumetto e voglio metterlo dentro
questa posizione di memoria puoi tipo
fudge questo ma non vuoi
perché là è molto lo sai
il compilatore specifico non lo fa e poi
oltre a ciò la dimensione potrebbe non essere la dimensione
del tipo in modo da poter dire qualcosa
come se non volessi un numero intero a 32 bit e
in modo che il pubblico dirà che è grande io
voglio darti un 64 bit perché
non c’è niente nello standard che dice
che è strutturato dice che deve farlo
sono particolarmente adulte ma non è così
devono avere il layout esatto alcuni
altri lo fanno diversamente dagli altri
per lo più va bene per lo più sono te
conosco lo stesso layout ma non lo sono
garantiti per essere e così Pilers possono ottenere
molto interessante quando parli
comportamento indefinito che è dove questo
inizia fondamentalmente a entrare in gioco il
cosa è – l’argomento è interessato solo
con l’operazione per fornirti il
variabili quali l’interoperabilità con
il lavoro va benissimo alla memoria
ordine in attesa che l’ordine di memoria ti permette di
tipo di specificare in diversi modi
le cose dovrebbero funzionare il lavoro è diverso
modello e qui ecco la robica
la differenza dice più undici modello normale
dice questo genera questo insieme di
istruzioni su queste architetture così
è fondamentalmente ecco cosa ottiene
generato modello normale Java dice se
queste cose sono successe prima di questo
la cosa aveva questo rapporto esattamente questo
relazione questa relazione questi sono
due diversi modi di specificare le cose
il che significa che non puoi davvero accettarlo
e dire queste serie di istruzioni che
sappi andare per andare a questo sono leggermente
diverso quindi sono un po ‘è
come guardare un ordine nello stato è
non proprio adatto per l’affitto di scopo per
lavoro ricorda che non è sbagliato
tanto quanto quello che risulta è uguale a plus
11 è molto più conservativo con cosa
consente al codice di migrare prima e
dopo le operazioni, quindi, cosa ha portato questo
per bene abbiamo provato diversi provarli
fumetti atomici in realtà e ne avevamo alcuni
vari problemi con questo
lavoro fino a quando non abbiamo avuto un contributore che
in pratica hai detto che sai cosa facciamo solo
passare attraverso il GBM prendere le istruzioni
area soluzione ma per tutti i diversi
tipi e non sicuri importarli tutti così
questo è quello che abbiamo fatto in pratica
conoscere e avere i nostri sequel di operazioni
politiche C ++ funzioni che RJ
Chandrakala compatibile così quando dici
qualcosa come put int volatile lo fa
efficacemente le stesse istruzioni su fatto
lo sai su x86 allora sarebbe
fare quello avrebbe fatto con il lavoro di
chimica così abbiamo identificato questo in anticipo
ma noi innoviamo quando suoniamo
in giro con varie cose questo è dove
siamo atterrati se lo stai facendo
Windows devi fare le cose leggermente
in modo diverso ma efficacemente genera
lo stesso codice
sono solo C ++ è bene su questo così
rampare qui ci ha dato un po ‘ di
tempo per le domande tipo di ciò che è il prossimo
e ti spiegherò come sai dove siamo
stare in piedi
dice che potrebbero essere messaggi C 32 byte a
la parte superiore quindi stiamo andando allo standard C ++
si sta guardando IPC si sta guardando
solo la lingua che un messaggio è inviato
passa attraverso te conosci un insieme di
operazioni che si aggiungono a un buffer di registro a
il ricevitore lo legge e questo è tutto
c’è il conducente non ha alcun impatto su così
il fatto che il tuo Java non ha alcun impatto
un messaggio va bene da C ++ a C ++ 32 milioni
messaggi al secondo ok come funziona
impilare con il resto delle cose
beh, Java ha 30 anni e in realtà no
fatto import che sta appena iniziando
per l’ultima settimana sai che hai il
capacità di eseguire questi ed è a
15 milioni effettivamente vedono
vedere la maglia arrivando in 15 milioni è
in realtà su ciò che abbiamo iniziato con il lavoro
quindi questo migliorerà solo ma ancora
notare che C ++ è un po ‘meglio
perché pensi in quel modo ma poi allora
il fatto che siamo anche per lo più è come
per lo più sono organizzazioni compilate
ci sono molte ottimizzazioni del compilatore
che sono fatti in C ++ e C che non hanno
fatto la loro strada per conoscere il JIT
i compilatori alla fine erano tutti ma
ci sono ottimizzazioni c’è anche a
poche cose che abbiamo colpito con questo noi te
so che possiamo ottenere più ottimizzazioni così
sai cosa c’è dopo mentre siamo stati
lavorando su
rivoluzione di persistenza siamo stati anche noi
parlando di te sai fare la crittografia
e sicurezza vari aspetti efficienti
MVC per la correzione degli errori e il design
la struttura del buffer del registro ci consente di fare
alcune cose molto belle per la vita da un
errore di correzione del punto di vista del codice
tutti sottolineano è qualcosa che
è imminente e c’è sempre
performance Grazie e c’è in realtà
un bel po ‘di cose che si possono fare qui
Immagino ci sia probabilmente solo con alcuni
C ++ cose specifiche che potrebbero ottenere
altri tre milioni su questo solo
in modo conservativo, quindi penso che questo possa
effettivamente migliorare e anche noi siamo stati
lavorando su un driver C ++ per un po ‘
in più accenti unici la maggior parte di questo
a parte sai che la maggior parte di questo è in realtà
cose che abbiamo fatto nel nostro io sono
stanco sai che ce ne sono alcuni
lavoro sponsorizzato che stavamo cercando
a per persistenza e replicazione così
ci sono cose interessanti quindi
allegando così siamo andati dopo Aaron con
un design molto diverso che ho scritto a
molti protocolli e sai quando tu
pensa di sapere come fare qualcosa
probabilmente dovrebbe davvero chiedere a qualcuno
altrimenti come avrebbero fatto perché lo faranno
venire fuori con l’idea è che tu mai
il pensiero di lavorare con Martin è stato il suo
vera gioia in quanto non ha paura di provare
cose e tribù che devi provare a fare
cose e vedi vediamo cosa succede
questo è ciò che si è veramente evoluto lassù
questo sta cercando di fare cose diverse
le cose vedono cosa succede e tu sai
vedere cosa puoi fare se non l’ ho fatto
dire una cosa è provare a mettere questo
per sempre qui e parlami dammi
sappi provare nuove cose e vedere cosa
accade
puoi trovare l’ area puoi trovare il
sequel più codice pure e quassù

Please follow and like us: