Mac OS X più lento di OS 9? Ecco perché.

La discussione sulla velocita' di Mac OS X ha catalizzato l'attenzione di molti utenti reali e potenziali del nuovo sistema operativo di Apple. E' certamente vero che X e' poi lento di Mac OS 9 sulla stessa macchina e ci sono diverse ragioni per questo. Le cose non rimarranno cosi' a lungo e le motivazioni vengono da un testimone che conosce molti segreti della struttura dell'OS e delle sue applicazioni.

Si tratta di Andrew Welch, presidente della software house Ambrosia che da oltre 10 anni produce giochi e utilities per Mac, ha lavorato con Next e OpenStep il sistema operativo da cui Mac OS X deriva molta della sua tecnologia.

Ecco una traduzione pressoché fedele del suo suo intervento sulla newsletter di Ambrosia.

“Ho una grande familiarità  con Mac OS dal punto di vista del programmatore, sono informato su OpenStep, e ho lavorato tantissimo con le API di X nei mesi scorsi.
Tra i vari progetti che stiamo portando avanti c’è il porting di dell’applicazione di cattura video e schermo Snapz Pro su Mac OS X.
Sebbene si tratti di un prodotto non semplice da trasferire sul nuovo sistema a causa della integrazione richiesta, lo sviluppo sta procedendo bene e potete valutarlo con gli screenshot presenti sul sito di Ambrosia.

In ogni caso, come molte altre persone che stanno utilizzando Mac OS X ero preoccupato per le prestazioni del nuovo OS. La verita’ e’ che non c’è alcun singolo aspetto che rallenta OS X. Per poter velocizzare OS X deve essere introdotta una miriade di piccoli aggiustamenti e ottimizzazioni a tutti i livelli del sistema operativo (specialmente sul meccanismo di distribuzione degli eventi).

Lo sviluppo del software cerca di ottenere una prima fase di cose che funzionano, poi si studia come farle funzionare piu’ velocemente. L’ottimizzazione arriva sempre nell’ultimo stadio: la ragione per questo sta nel fatto che è impossibile quantificare accuratamente le cause dei colli di bottiglia fino a che il prodotto non e’ finalizzato e non si sono realizzato test sui tempi (profiling) per determinare dove sono localizzati i problemi.

Credo che Apple comprenda benissimo che la velocita’ di OS X sia un problema. Steve Jobs ha presenziato a WWDC (la conferenza degli sviluppatori) ed ha ammesso che la velocità  è la preoccupazione principale degli utenti di Mac OS X.
E’ ovvio comprendere che se Jobs ha affermato questo in pubblico sicuramente a chi lavora in Apple per poter velocizzare il sistema brucia la sedia su cui lavora.

Apple ha distribuito Mac OS X il 24 Marzo perche’ era assolutamente necessario per gli sviluppatori: i progetti senza una vera scadenza tendono a restare sempre in beta e non vengono mai messi sul mercato (lo testimoniano molti progetti OpenSource che non hanno una guida certa o un management efficiente).
Apple doveva mettere in commercio MAc OS X per fornire agli sviluppatori una serie di API definitive e un pubblico per cui scrivere le applicazioni (e stimolarci a scriverle).

MacOS X 10.0.x rigurda piu’ il rapporto tra Apple e i suoi Sviluppatori piu’ che tra Apple e gli utenti (questa e’ la ragione per cui OS X viene definito per “early adopters”); in ogni caso l’utente finale e’ quello che decide alla fine : tutti quelli che hanno deciso di essere tra i primi a sperimentare OS X sono quelli che possono indicare ad Apple e agli sviluppatori di prodotti che cosa è accettabile in termini di prestazioni e caratteristiche.

Per la mia esperienza, posso dire che il semplice porting di una applicazione alle nuove API di OS X (Carbon) non è sufficiente per ottenere un prodotto di prestazioni accettabili. Uno dei progetti su cui stiamo lavorando e’ stato portato su X e la velocita’ era assolutamente infima.
Ma un significativo guadagno di prestazioni venne ottenuto dopo alcuni test di velocita’ (profiling) e determinando che un numero di piccole chiamate agli accessori Mac OS X (per esempio, le chiamate a GetWindowPortBounds() invece dell’accesso a myPort->portRect) ci stavano rallentando. Cosi’ decidemmo di chiamare gli accessori una sola volta all’inizio della nostra funzione salvando i risultati nella cache.

Ora abbiamo qualcosa che gira decentemente in Mac OS X. Non e’ così veloce come lo stesso prodotto in MacOS 9, ma non penso che debba esserlo. OS X è un sistema operativo con multitasking preemptive, non e’ possibile monopolizzare l’intero processore quando si vuole far girare qualcosa che sfrutta al massimo le perfomance della macchina. Inoltre ci sono molte parti dell’OS sottostante che non sono semplicemente ottimizzate come in Mac OS 9.

Il fardello che pesa sulle spalle degli sviluppatori MacOS non e’ soltanto nel conoscere nuove API ma anche nuovi strumenti di sviluppo e tecniche per sfruttare il meglio di X.
Ci sono due approcci diversi per gli sviluppatori: puoi diventare frustrato perché le cose sono cambiate o puoi gettarti sull’avventura del nuovo sistema.
Ci sono cose interessanti con cui giocare: sbattere la testa sul muro cercando di lavorare alla vecchia maniera non permette di valutare questa opportunità .

Aspettatevi che tutte le applicazioni che girano su OS X siano piu’ lente delle stesse applicazioni che girano su OS 9 (con alcune eccezioni – la performanche di OpenGL sembra essere migliore su X – ad esempio).

Ci sono due ragioni per questo: la prima e’ che OS X e’ piu’ lento di OS 9 perché ha il preemptive multitasking ed e’ stato scritto per lavorare subito, non e’ stato ancora ottimizzato e perche’ usa piu’ memoria di OS 9.
La seconda ragione e’ che le applicazioni che girano su Mac OS X sono state scritte per girare da subito (gli sviluppatori stanno dandosi da fare per scrivere in fretta le applicazioni per il nuovo OS) e non sono state ancora ottimizzate per MacOS X.
Mi aspetto che entrambe le situazioni cambino in concomitanza con l’ottimizzazione e il perfezionamento di OS X da parte di parte di Apple e del progressivo equivalente miglioramento della conoscenza degli sviluppatori per le loro applicazioni.

Si sono creati diversi miti sui motivi della lentezza di Mac OS X, cerchero’ di sfatarne alcuni.

Comprare nuovo hardware
Si dice che Apple non desideri ottimizzare X perché vuole che gli utenti comprino nuovo hardware per farlo girare.
Sebbene sia vero che Apple sia un produttore hardware, è allo stesso tempo vero che sa benissimo di non poter perdere la sua base di installato, sta cercando di acquisire clienti, non di perderli. Apple non è stupida, sa benissimo che se acquistate nuovo hardware per far girare meglio X e questo non e’ ancora ottimizzato Windows XP e altri sistemi operativi faranno girare meglio le applicazioni: questo sarebbe un grosso problema per Apple.

Carbon contro Cocoa.
Carbon e Cococa sono due serie di API che gli sviluppatori possono utilizzare per scrivere applicazioni per OS X.
Cocoa e’ basato sulle API OpenStep, Carbon e’ basto sulle API MacOS.
Cocoa e’ object-oriented, Carbon e’ procedurale.
Sia Carbon che Cocoa si basano sui CoreServices — potete scrivere una applicazione lenta per MacOS X sia con Carbon che con Cocoa, potete scrivere una applicazione veloce in MacOS X sia in Carbon che Cocoa: chi attribuisce ai diversi set di API il risultato di performance finale si sbaglia.

Quartz.
Quartz si occupa delle gestione della visutalizzione per OS X:permette cose molto impressionanti ma molti hanno accusato Quartz di essere il responsabile della lentezza di X.
Mentre e’ vero che se accelerate con l’hardware alcune funzioni di Quartz potrebbero velocizzarsi, Quartz ha realmente ottime performance e questo anche in base ai test che ho realizzato sui tempi…. ma c’e’ anche in questo campo spazio per ottimizzare e migliorare.

Lo scheduler di Mach.
Mach e’ il “core”, il nocciolo di OS X; gestisce le cose a basso livello come il controllo della memoria e del processore.
Mach e’ veramente molto veloce, e’ un kernel altamente ottimizzato.
Lo scheduler dell’attuale versione di Mac OS X permette di attribuire diverse priorita’ a differenti compiti, sebbene qualcuni affermi il contrario: soltanto alcuni comandi a livello utente come “nice” e altri non permettono di gestire lo scheduler – i programmatori possono gia’ utilizzare lo scheduler per regolare la priorita’ dei task e infatti questo avviene in Quartz per gli aggiornamenti dello schermo.

Cosa fare per aumentare la velocita’ di OS X?
Prima di tutto, aggiungere RAM. OS X si mangia la RAM in maniera incredibile: parte del motivo e’ che ogni finestra sullo schermo ha bisogno di memoria allocata.
Per esempio, una finestra di 800×600 pixel, in milioni di colori usa 1.9 Mb di RAM e questo per una singola finestra.
E questo non riguarda nemmeno il contenuto della finestra stessa.
Ora osservate quante finestre avete aperte sul vostro desktop e vi renderete conto di come possiate consumare rapidamente la memoria a disposizione.
Se la memoria RAM si esaurisce, OS X deve scambiare parti di memoria con il vostro hard disk che e’ ovviamente piu’ lento della RAM e questo rallenta notevolmente le operazioni.
I costi della RAM si sono abbassati cosi’ tanto negli ultimi tempi che l’acquisto puo’ rappresentare il vostro miglior investimento per X.

L’altra cosa che potete fare e’ scrivere ad Apple e dire loro che la velocita’ di MacOS X e’ un problema per voi. Se scrivete una lettera ragionata, sarete ascoltati.
Basta andare su http://www.Apple.com/macosx/feedback/

Non sarebbe male scrivere anche ai produttori dei vostri software preferiti e far loro conoscere la stessa cosa: ditegli che le perfomance sono importanti per voi.
Ditegli anche che non volete un semplice porting su MacOS X ma anche una ottimizzazione: potete farlo.

La velocita’ e’ la mia unica preoccupazione per MacOS X.
So che la “facilita’ d’uso” include la mancanza di crash e la relativa perdita dei dati, e la fondamenta di OS X sono solidissime.

Credo onestamente che che OS X sia piu’ facile da usare per i nuovi arrivati e per gli utenti casuali di Mac OS 8/9. Gli utenti esperti ameranno il fatto che c’e’ anche una command line a disposizione se lo vogliono.
Se Mac OS X puo’ essere velocizzato penso che Apple abbia una buone possibilità  di acquisire nuovi clienti piuttosto che vederli migrare verso Windows.
Ecco perchè spero in un Mac OS X più veloce.”
[dal messaggio originale (06-21-2001)] Andrew Welch
Presidente di
Ambrosia Software, Inc.

(grazie a Lucio Bragagnolo per la segnalazione)

Potete commentare questo articolo nella sezione del nostro forum dedicata alle prestazioni di Mac OS X.