-
Alextg, ArgentChe fine ha fatto ? Non ci dedichi piu' tempo ora che e' completo (E inutilizzabile) ?
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Alextg, ArgentScritto daNon Autenticatoil 2013-09-24 14:20:35.0 alle 2013-09-24 14:20:35.0> Che fine ha fatto ? Non ci dedichi piu' tempo ora che e' completo (E inutilizzabile) ?
SSSSST! Lascia che finisca Linoleum!
-
Re: Alextg, ArgentScritto da:
> > Che fine ha fatto ? Non ci dedichi piu' tempo ora che e' completo (E inutilizzabile) ?
>
> SSSSST! Lascia che finisca Linoleum!
Linoleum restera' la sua piu' grande opera incompiuta, quando si smembrera' con l'Argent.
Lo faccio per la sua memoria !`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo
-
-
Re: Alextg, ArgentScritto daaltgutente che non utieneil 2013-09-25 00:36:29.0 alle 2013-09-25 00:36:29.0Trollate totali: 11540> Che fine ha fatto ? Non ci dedichi piu' tempo ora che e' completo (E inutilizzabile) ?
Macche`, aspetto l'ispirazione.
Intanto mi sto rompendo il cazzo su Lino3.
Un pochino si`, eh?
Penso che si`, e` pronto, e salta fuori un'altro dettagliuccio.
Alla fine per lo stack probing ho adottato, per default, la soluzione "pochi, maledetti e subito", che consiste nel probing di tutta un'area di stack di dimensioni non esagerate (1 milione di unita` per thread, cioe` 4 megabytes ma NON 4 mebibytes, con il resto di 48576 unita` allocato come red zone). Pero` su opzione si puo` tornare al probing in real-time al momento della costruzione di grossi call frames. Pero` non la consigliero`, e` deleteria per la performance. Meglio pochi, maledetti e subito: nell'impostazione di default, il modulo di run-time fa il commit di tutto lo stack di un thread prima di far partire qualsiasi thread, cosi` il call frame e` allocato senza pensieri sottraendo un numero ad ESP e mappando un registro come puntatore base. Tra creazione e distruzione del call frame passano 5 cicli soli. A fare il probing, anche solo per capire se e` il caso di toccare le pagine successive, servirebbero 7 cicli in piu`, cioe` sul mio 2.8 GHz un quattrocentomilionesimo di secondo in piu` per chiamata. Inaccettabile: Linoleum considera importanti anche i miliardesimi di secondo.
PEro` mi sto rompendo il cazzo, voglio fare quel che viene dopo.
-
Re: Alextg, ArgentScritto daNon Autenticatoil 2013-09-25 00:44:57.0 alle 2013-09-25 00:44:57.0> > Che fine ha fatto ? Non ci dedichi piu' tempo ora che e' completo (E inutilizzabile) ?
>
> Macche`, aspetto l'ispirazione.
> Intanto mi sto rompendo il cazzo su Lino3.
> Un pochino si`, eh?
> Penso che si`, e` pronto, e salta fuori un'altro dettagliuccio.
>
> Alla fine per lo stack probing ho adottato, per default, la soluzione "pochi, maledetti e subito", che consiste nel probing di tutta un'area di stack di dimensioni non esagerate (1 milione di unita` per thread, cioe` 4 megabytes ma NON 4 mebibytes, con il resto di 48576 unita` allocato come red zone). Pero` su opzione si puo` tornare al probing in real-time al momento della costruzione di grossi call frames. Pero` non la consigliero`, e` deleteria per la performance. Meglio pochi, maledetti e subito: nell'impostazione di default, il modulo di run-time fa il commit di tutto lo stack di un thread prima di far partire qualsiasi thread, cosi` il call frame e` allocato senza pensieri sottraendo un numero ad ESP e mappando un registro come puntatore base. Tra creazione e distruzione del call frame passano 5 cicli soli. A fare il probing, anche solo per capire se e` il caso di toccare le pagine successive, servirebbero 7 cicli in piu`, cioe` sul mio 2.8 GHz un quattrocentomilionesimo di secondo in piu` per chiamata. Inaccettabile: Linoleum considera importanti anche i miliardesimi di secondo.
>
> PEro` mi sto rompendo il cazzo, voglio fare quel che viene dopo.
Non ci capisco niente di tutto questo technobabble, mi sento tagliato fuori.
-
Re: Alextg, ArgentScritto daaltgutente che non utieneil 2013-09-25 05:18:28.0 alle 2013-09-25 05:18:28.0Trollate totali: 11540> > > Che fine ha fatto ? Non ci dedichi piu' tempo ora che e' completo (E inutilizzabile) ?
> >
> > Macche`, aspetto l'ispirazione.
> > Intanto mi sto rompendo il cazzo su Lino3.
> > Un pochino si`, eh?
> > Penso che si`, e` pronto, e salta fuori un'altro dettagliuccio.
> >
> > Alla fine per lo stack probing ho adottato, per default, la soluzione "pochi, maledetti e subito", che consiste nel probing di tutta un'area di stack di dimensioni non esagerate (1 milione di unita` per thread, cioe` 4 megabytes ma NON 4 mebibytes, con il resto di 48576 unita` allocato come red zone). Pero` su opzione si puo` tornare al probing in real-time al momento della costruzione di grossi call frames. Pero` non la consigliero`, e` deleteria per la performance. Meglio pochi, maledetti e subito: nell'impostazione di default, il modulo di run-time fa il commit di tutto lo stack di un thread prima di far partire qualsiasi thread, cosi` il call frame e` allocato senza pensieri sottraendo un numero ad ESP e mappando un registro come puntatore base. Tra creazione e distruzione del call frame passano 5 cicli soli. A fare il probing, anche solo per capire se e` il caso di toccare le pagine successive, servirebbero 7 cicli in piu`, cioe` sul mio 2.8 GHz un quattrocentomilionesimo di secondo in piu` per chiamata. Inaccettabile: Linoleum considera importanti anche i miliardesimi di secondo.
> >
> > PEro` mi sto rompendo il cazzo, voglio fare quel che viene dopo.
>
> Non ci capisco niente di tutto questo technobabble, mi sento tagliato fuori.
E non ti ho ancora detto dell'ultima ottimizzazione di stanotte: invece di leggere l'ID del thread corrente chiamando educatamente GetCurrentThreadId e spendendo un centinaio di cicli macchina nella API ufficiale, mi sembra che stia funzionando perfettamente anche l'andarsi a prendere direttamente il thread ID nel thread info block (TIB) accessibile dal descrittore FS all'offset +24h. Si ottiene lo stesso risultato in due cicli esatti. Pero` dicono che il formato del TIB di Win32 non sia proprio ufficiale, pero` Wine lo copia, e tutti lo usano, sicche` e` uno standard di fatto.
accludo diapositiva:
eh si`, con l'immagine si capisce tutto meglio, vero?
**Modificato dall'autore il 25.09.2013 05:40**-
Re: Alextg, ArgentScritto daaltgutente che non utieneil 2013-09-25 06:09:40.0 alle 2013-09-25 06:09:40.0Trollate totali: 11540> > > > Che fine ha fatto ? Non ci dedichi piu' tempo ora che e' completo (E inutilizzabile) ?
> > >
> > > Macche`, aspetto l'ispirazione.
> > > Intanto mi sto rompendo il cazzo su Lino3.
> > > Un pochino si`, eh?
> > > Penso che si`, e` pronto, e salta fuori un'altro dettagliuccio.
> > >
> > > Alla fine per lo stack probing ho adottato, per default, la soluzione "pochi, maledetti e subito", che consiste nel probing di tutta un'area di stack di dimensioni non esagerate (1 milione di unita` per thread, cioe` 4 megabytes ma NON 4 mebibytes, con il resto di 48576 unita` allocato come red zone). Pero` su opzione si puo` tornare al probing in real-time al momento della costruzione di grossi call frames. Pero` non la consigliero`, e` deleteria per la performance. Meglio pochi, maledetti e subito: nell'impostazione di default, il modulo di run-time fa il commit di tutto lo stack di un thread prima di far partire qualsiasi thread, cosi` il call frame e` allocato senza pensieri sottraendo un numero ad ESP e mappando un registro come puntatore base. Tra creazione e distruzione del call frame passano 5 cicli soli. A fare il probing, anche solo per capire se e` il caso di toccare le pagine successive, servirebbero 7 cicli in piu`, cioe` sul mio 2.8 GHz un quattrocentomilionesimo di secondo in piu` per chiamata. Inaccettabile: Linoleum considera importanti anche i miliardesimi di secondo.
> > >
> > > PEro` mi sto rompendo il cazzo, voglio fare quel che viene dopo.
> >
> > Non ci capisco niente di tutto questo technobabble, mi sento tagliato fuori.
>
> E non ti ho ancora detto dell'ultima ottimizzazione di stanotte: invece di leggere l'ID del thread corrente chiamando educatamente GetCurrentThreadId e spendendo un centinaio di cicli macchina nella API ufficiale, mi sembra che stia funzionando perfettamente anche l'andarsi a prendere direttamente il thread ID nel thread info block (TIB) accessibile dal descrittore FS all'offset +24h. Si ottiene lo stesso risultato in due cicli esatti. Pero` dicono che il formato del TIB di Win32 non sia proprio ufficiale, pero` Wine lo copia, e tutti lo usano, sicche` e` uno standard di fatto.
>
> accludo diapositiva:
>
>
> eh si`, con l'immagine si capisce tutto meglio, vero?
Mah, si`, a ogni modo e` meglio se non lo metto nel RTM come unico modo di ottenere il thread ID. Farei forse meglio a metterlo come stringa di linguaggio macchina in una libreria specifica di Win32, e poi puntarci una label. Quando l'applicazione vuole il modo veloce seleziona il suo indirizzo nel puntatore "thread resolver", se no ci lascia quello ufficiale che usa GetCurrentThreadId. Mi fa l'idea che prima o poi possa far girare le scatole...
-
-
-
-