Developer_Tips - en to it translation catalogue (30 entries)

note: Tag: title
en: Tips for Developers
it: Suggerimenti per Sviluppatori

note: Tag: para
en: Every good programming textbook covers problems with memory allocation and the performance of specific functions. As you develop your software, be aware of issues that might increase power consumption on the systems on which the software runs. Although these considerations do not affect every line of code, you can optimize your code in areas which are frequent bottlenecks for performance.
it: Ogni buon manuale di progammazione affronta i problemi di allocazione memoria e le prestazioni di specifiche funzioni, un pò meno le questioni legate al risparmio energetico. Come buona pratica di sviluppo del software, quindi, si dovrebbero considerare anche quelle situazioni che possono influire sui consumi energetici nei sistemi sui quali il software dovrà funzionare. Queste considerazioni non influenzano ogni riga di codice, ma sono dirette ad ottimizzare quelle parti di codice che più freqentemente presentano limitazioni nelle prestazioni.

note: Tag: para
en: Some techniques that are often problematic include:
it: Alcune tecniche che risultano spesso problematiche, sono:

note: Tag: para
en: using threads.
it: utilizzo di thread.

note: Tag: para
en: unnecessary CPU wake-ups and not using wake-ups efficiently. If you must wake up, do everything at once (race to idle) and as quickly as possible.
it: wakeup non necessari della CPU unito al loro uso poco efficiente. Alternativa: se occorre un wakeup, <emphasis>race to idle</emphasis>, eseguire i task il più velocemente possibile.

note: Tag: para
en: using <function>[f]sync()</function> unnecessarily.
it: utilizzo non indispensabile della funzione <function>[f]sync()</function>.

note: Tag: para
en: unnecessary active polling or using short, regular timeouts. (React to events instead).
it: utilizzo non necessario di polling o di brevi regolari timeout. Alternativa: reagire agli eventi.

note: Tag: para
en: not using wake-ups efficiently.
it: utilizzo non efficiente dei wakeup.

note: Tag: para
en: inefficient disk access. Use large buffers to avoid frequent disk access. Write one large block at a time.
it: accesso inefficiente al disco. Alternativa: usare buffer capienti per ridurre gli accessi; usare blocchi di scrittura più grandi.

note: Tag: para
en: inefficient use of timers. Group timers across applications (or even across systems) if possible.
it: utilizzo inefficiente dei timer. Alternativa: raggruppare, quando possibile, i timer di più applicazioni, o meglio ancora dei sistemi.

note: Tag: para
en: excessive I/O, power consumption, or memory usage (including memory leaks)
it: utilizzo eccessivo dell'I/O e della memoria, inclusi i <emphasis><ulink url="http://it.wikipedia.org/wiki/Memory_leak">memory leaks</ulink></emphasis>

note: Tag: para
en: performing unnecessary computation.
it: esecuzioni non necessarie di eleborazioni

note: Tag: para
en: The following sections examine some of these areas in greater detail.
it: Le seguenti sezioni esaminano in maggior dettaglio, alcune di queste aree.

note: Tag: title
en: Using Threads
it: Usare i Thread

note: Tag: para
en: It is widely believed that using threads makes applications perform better and faster, but this is not true in every case.
it: È un luogo comune credere che l'uso dei thread migliori le prestazioni e la velocità delle applicazioni: ciò non è sempre vero!.

note: Tag: para
en: Python uses the Global Lock Interpreter<footnote><para><ulink url="http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock" /></para></footnote>, so threading is profitable only for larger I/O operations. <application>Unladen-swallow</application> <footnote><para><ulink url="http://code.google.com/p/unladen-swallow/" /></para></footnote> is a faster implementation of Python with which you might be able to optimize your code.
it: Python usa GIL o Global Lock Interpreter <footnote><para><ulink url="http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock" /></para></footnote>, che rende vantaggioso il threading solo in significative operazioni di I/O. <application>unladen-swallow</application> <footnote><para><ulink url="http://code.google.com/p/unladen-swallow/" /></para></footnote> è una implementazione di Python più veloce, con cui è possibile ottimizzare il codice.

note: Tag: para
en: Perl threads were originally created for applications running on systems without forking (such as systems with 32-bit Windows operating systems). In Perl threads, the data is copied for every single thread (Copy On Write). Data is not shared by default, because users should be able to define the level of data sharing. For data sharing the <application>threads::shared</application> module has to be included. However, data is not only then copied (Copy On Write), but the module also creates tied variables for the data, which takes even more time and is even slower. <footnote><para><ulink url="http://www.perlmonks.org/?node_id=288022" /></para></footnote>
it: I thread di Perl sono stati originariamente creati per eseguire applicazioni senza usare processi di fork (come nei sistemi windows a 32-bit). Nei thread di Perl, i dati vengono copiati per ogni singolo thread (Copy On Write). Per impostazione, i dati non vengono condivisi e gli utenti dovrebbero definire il loro livello di condivisione. Per la condivisione dei dati, occorre includere il modulo <application>threads::shared</application>. In tal modo, il modulo non solo copia i dati (Copy On Write), ma crea anche delle variabili ad essi collegati, con l'effetto di richiedere più tempo e di risultare più lento. <footnote><para><ulink url="http://www.perlmonks.org/?node_id=288022" /></para></footnote>

note: Tag: para
en: C threads share the same memory, each thread has its own stack, and the kernel does not have to create new file descriptors and allocate new memory space. C can really use the support of more CPUs for more threads. Therefore, to maximize the performance of your threads, use a low-level language like C or C++. If you use a scripting language, consider writing a C binding. Use profilers to identify poorly performing parts of your code. <footnote><para><ulink url="http://people.redhat.com/drepper/lt2009.pdf" /></para></footnote>
it: I thread di C condividono la stessa memoria, ogni thread ha il proprio stack ed il kernel non deve creare nuovi descrittori di file ed assegnare nuova memoria. Il C può effettivamente avvalersi del supporto di più CPU per più thread. Perciò, per massimizzare le prestazioni dei thread, usare un linguaggio low-level come C o C++. Se si usa un linguaggio di script, si consideri la progettazione di un <emphasis>C binding</emphasis>. Impiegare un software di <emphasis>profiling</emphasis> per identificare nel codice, le sezioni con scarse prestazioni. <footnote><para><ulink url="http://people.redhat.com/drepper/lt2009.pdf" /></para></footnote>

note: Tag: title
en: Wake-ups
it: Wakeup

note: Tag: para
en: Many applications scan configuration files for changes. In many cases, the scan is performed at a fixed interval, for example, every minute. This can be a problem, because it forces a disk to wake up from spindowns. The best solution is to find a good interval, a good checking mechanism, or to check for changes with <application>inotify</application> and react to events. <application>Inotify</application> can check variety of changes on a file or a directory.
it: Molte applicazioni scansionano i file di configurazione alla ricerca di variazioni. In molti casi, la scansione avviene ad intervalli regolari, per esempio ogni minuto. Ciò può essere un problema, perchè forza la riattivazione del disco dal suo stato di spindown (lo stato inattivo, in cui il disco ruota a minime velocità). La soluzione migliore sarebbe impostare un intervallo adeguato o un buon meccanismo di controllo, oppure verificare le variazioni con <application>inotify</application> e reagire agli eventi. <application>inotify</application> può controllare un gran numero di variazioni sia in file sia in directory.

note: Tag: para
en: For example:
it: Per esempio:

note: Tag: para
en: The advantage of this approach is the variety of checks that you can perform.
it: Il vantaggio di questo approccio è dato dalla varietà di controlli che è possibile effettuare.

note: Tag: para
en: The main limitation is that only a limited number of watches are available on a system. The number can be obtained from <filename>/proc/sys/fs/inotify/max_user_watches</filename> and although it can be changed, this is not recommended. Furthermore, in case <application>inotify</application> fails, the code has to fall back to a different check method, which usually means many occurrences of <code>#if #define</code> in the source code.
it: Il principale svantaggio è rappresentato dal limitato numero di controlli disponibili nel sistema, indicato nel file<filename>/proc/sys/fs/inotify/max_user_watches</filename> che si raccomanda di non modifcare. Inoltre, nel caso in cui <application>inotify</application> fallisca, il codice dovrebbe ricorrere ad un metodo di controllo alternativo; il che significa inserire nel codice molte istruzioni <code>#if #define</code> .

note: Tag: para
en: For more information on <application>inotify</application>, refer to the <citerefentry><refentrytitle>inotify</refentrytitle></citerefentry> man page.
it: Per maggiori informazioni su <application>inotify</application>, consultare le pagina man su <citerefentry><refentrytitle>inotify</refentrytitle></citerefentry>.

note: Tag: title
en: Fsync
it: fsync

note: Tag: para
en: <function>Fsync</function> is known as an I/O expensive operation, but this is is not completely true. For example, refer to Theodore Ts'o's article <citetitle>Don't fear the fsync!</citetitle> <footnote> <para> <ulink url="http://thunk.org/tytso/blog/2009/03/15/dont-fear-the-fsync/" /> </para> </footnote> and the accompanying discussion.
it: <function>fsync</function> è nota essere una operazione di I/O molto esigente, ma ciò non è completamente vero. Per spezzare una lancia a favore di <function>fsync</function>, consultare l'articolo scritto da Theodore Ts'o' <citetitle>Don't fear the fsync!</citetitle> <footnote> <para> <ulink url="http://thunk.org/tytso/blog/2009/03/15/dont-fear-the-fsync/" /> </para> </footnote> e la relativa discussione.

note: Tag: para
en: <application>Firefox</application> used to call the <application>sqlite</application> library each time the user clicked on a link to go to a new page. <application>Sqlite</application> called <function>fsync</function> and because of the file system settings (mainly ext3 with data-ordered mode), there was a long latency when nothing happened. This could take a long time (up to 30 seconds) if another process was copying a large file at the same time.
it: <application>Firefox</application> usava caricare la libreria <application>sqlite</application> ognivolta che l'utente cliccava sul link di una nuova pagina. <application>sqlite</application> a sua volta chiamava la funzione <function>fsync</function> e a causa delle impostazioni del file system (soprattutto del f.s. ext3 in modalità data-ordered), si verificava una lunga latenza. La pagina web si caricava dopo un lungo ritardo, che poteva durare fino a 30 secondi se era in esecuzione un altro processo, che per esempio, copiava un file molto grande.

note: Tag: para
en: However, in other cases, where <function>fsync</function> wasn't used at all, problems emerged with the switch to the ext4 file system. Ext3 was set to data-ordered mode, which flushed memory every few seconds and saved it to a disk. But with ext4 and laptop_mode, the interval between saves was longer and data might get lost when the system was unexpectedly switched off. Now ext4 is patched, but we must still consider the design of our applications carefully, and use <function>fsync</function> as appropriate.
it: Inoltre, in altri casi, in cui <function>fsync</function> non veniva per nulla usata, si verificarono problemi con il passaggio al file system ext4. ext3 era impostato in modalità data-ordered, che ripuliva la memoria ogni pochi secondi, salvando i dati sul disco. Ma con ext4 e <emphasis>laptop_mode</emphasis> (usato nei portatili per prolungare la durata della batteria), l'intervallo delle operazioni di salvataggio era più lungo e poteva esserci una potenziale perdita di dati se il sistema veniva spento, improvvisamente. Ora ext4 è stato <emphasis>patched</emphasis>: (morale della favola) progettare attentamente le applicazioni e usare in modo appropriato la funzione <function>fsync</function>.

note: Tag: para
en: The following simple example of reading and writing into a configuration file shows how a backup of a file can be made or how data can be lost:
it: Il seguente semplice esempio di lettura e scrittura in un file di configurazione, mostra come sia possibile eseguire un backup di un file o .... perdere i dati:

note: Tag: para
en: A better approach would be:
it: Questa sarebbe una soluzione migliore:
