Windows 7′de Multi-threaded uygulamalar

Google Chrome ilk çıktığında ne kadar heyecanlanmıştık. Chrome’u çalıştırdığınızda başlatılan ilk thread (iş parçacığı) asla I/O işlemleri yapmıyor, böylece siz Chrome simgesine tıkladığınız anda uygulama açılıyordu. Yer imleriniz, geçmiş listeniz, kısacası Chrome’un ihtiyaç duyacağı ve diskinizde yazılı olan her şey ayrı thread’ler tarafından kontrol ediliyor, böylece kesintisiz bir web deneyimi yaşıyordunuz.

Aynı günlerde, IE8 tarafında ise işler biraz karışıktı. Chrome “her şey farklı threadlerle yapılıyor” anlayışı üzerine çok eğilmişti. Bunun üzerine ise Microsoft cephesinde “IE8′de de zaten her bir pencere ayrı bir thread altında çalışıyor.” fikri etrafında dönen bazı pazarlama adımları gördük. Bu doğruydu doğru olmasına fakat Chrome’daki multithreading anlayışı bundan biraz daha kapsamlıydı.

Ve bugünlere geldik. Microsoft, muhtemelen tarihinin en hızlı işletim sistemi olan Windows 7′yi satışa sunmak üzere. Yaklaşık 1 aydır kullandığım Windows 7 her anlamda bilgisayar başında geçirdiğim saatleri çok ama çok daha verimli kıldı.

Ama bahsedeceğim şey aslında şu: Windows 7 ilk açıldığında taskbar’daki tüm simgeler yükleniyor ve bilgisayar o an tam açılmamış, hard disk hala motor gibi çalışıyor olsa bile tüm bu simgeler üzerine tıklandığında kolayca tepki veriyor. Tıpkı Chrome’un ilk açılışı gibi.

Bu konunun biraz üzerine gittiğimde ise şunu farkettim: Bilgisayarınız ilk açıldığında, task bar’daki simgelere iliştirdiğiniz kısa yollar ve o uygulamalar ile ilgili geçmiş bilgilerinin hiç biri yüklenmiyor ve bu işlem muhtemelen farklı threadler tarafından yapılıyor. Böylece siz task bar simgelerini gördüğünüz anda üzerlerine tıklayıp çalıştırabiliyor, ya da yerlerini değiştirip özelliklerini görüntüleyebiliyorsunuz. (Task-bar simgelerinin nasıl yüklendiği ile ilgili henüz teknik bir bilgi bulamadım, dolayısıyla bu bir tahminden öteye geçmiyor aslında…) Benzer bir şekilde, Vista’da “Network & Sharing Center” simgesine tıkladığınızda bilgisayarın neredeyse 10 saniye boyunca tepki vermemesi gibi sorunlar Windows 7 de yaşanmıyor.

Bu tabi ki yeni bir teknik değil fakat kullanıcı arabirimlerinde multi-threaded metodlar izleme konusunda Google’ın teknoloji dünyasına öncülük ettiği de bir gerçek. Windows’ta da bunun örneklerini görmek gerçekten mutlu ediyor insanı. Tabi eğer Windows 7 baştan aşağı multi-threaded uygulamalar ile dolu ise, 96 MB Ram’e sahip bilgisayarlara nasıl kurulup çalıştırılabiliyor, o da başka bir incelemenin konusu…

NOT: Tüm bu yazdıklarıma ters düşebilir fakat Windows 7′de karşılaştığım tek performans problemi Chrome’da flash videolarını izlemeden önce Chrome ekranının 4-5 saniyeliğine tepki vermemesi. Muhtemelen Chrome’un gelecek sürümlerinde bu sorun da giderilecektir.

Mekanist.net’e daha rahat ulaşabilmek için

Eğer siz de Google Chrome kullanıyorsanız Mekanist.net için uygulama kısayolları oluşturup, siteye daha kolay erişebilirsiniz.

1. Mekanist.net’i açın ve sayfa menüsünden “Uygulama kısayolları oluştur” seçeneğini seçin

2. Gelen pencerede istediğiniz kısayolları işaretleyip “Tamam” tuşuna tıklayın

3. Mekanist.net kısayolunuz masaüstünde ve eğer seçtiyseniz başlat menüsünde oluşturulacaktır

4. Kısayola çift tıklatığınızda Mekanist.net ayrı bir uygulama penceresinde aılacaktır. 

SVG ve Tarayıcılar

Önümüzdeki günlerde SVG (Scalable Vector Graphics) hakkında ayrıntılı bir inceleme yapacağım. Fakat daha öncesinde bu çalışmamla ilgili ilk sonuçları aktarmak istedim. 

Daha ayrıntılı bilgiler vereceğim fakat özetlemek gerekirse SVG, W3′ün internet tarayıcıların vektörel grafikleri gösterebilmesi için geliştirdiği XML tabanlı bir standart. Yani sadece XML kodları ile vektörel grafikler oluşturabiliyorsunuz. Tabiki pratikte XML kodu yazarak bu grafikleri oluşturmak çok mümkün değil. O yüzden Adobe Illustrator gibi uygulamalarla grafikleri oluşturup XML tabanlı SVG formatında kaydedebiliyorsunuz. SVG Wikipedia’nın çok sık kullandığı bir format.

Yukarıda bahsettiğim gibi SVG bir W3 standardı. Yani tüm internet tarayıcılarının bu formatı destekliyor ve sorunsuz bir şekilde SVG grafiklerini görüntüleyebiliyor olması gerekiyor.

Firefox 3.0.3, Safari 3.1.2, Chrome 0.3.154.9 ve Internet Explorer 8 Beta 2 ile yapmış olduğum denemeler sonucunda karşılaştığım sonuçlar şunlar: 

Firefox 3.0.3 ve SVG

Firefox SVG dosyalarını oldukça güzel bir şekilde görüntüleyebiliyor. Yüklenme hızı süper değil fakat en hızlı yükleyen tarayıcından çok daha yavaş değil. Fakat yavaş olan bir şey var: Yeniden boyutlandırma. SVG görüntüsü yüklendikten sonra görüntüyü yaklaştırıp uzaklaştırdığınızda yeniden yükleme süresi inanılmaz yavaş ve şu haliyle oldukça rahatsızlık verici. 

Safari 3.1.2

Safari’nin Windows sürümü de SVG dosyalarını gayet hızlı bir şekilde yüklüyor. Yeniden boyutlandırma hızı Firefox’a göre çok daha hızlı. Gecikme süresi çok az.

Google Chrome 0.3.154.9

Chrome’un SVG’lerle olan ilişkisinin Safari’den farklı olmayacağını düşünüyordum iki tarayıcı da WebKit üzerine kurulu olduğu için. Fakat yanılmışım. Google Chrome hem SVG dosyalarını çok daha hızlı yüklüyor ve yeniden boyutlandırma süresi özellikle Firefox ile karşılaştırılamayacak kadar hızlı. Yakınlaştırma ve uzaklaştırma işlemleri neredeyse hiç vakit almıyor.

Internet Explorer 8 Beta 2

Anlatılacak bir şey yok. Internet Explorer 8 SVG grafiklerini desteklemiyor. Şaşırtıcı olmasa gerek. (Düzeltme: IE8 ile doğrudan SVG dosyalarını görüntülemek mümkün değil fakat Adobe’nin hazırladığı bir eklentiyi bilgisayarınıza kurarak Internet Explorer’dan da SVG dosyalarını görüntüleyebilirsiniz.)

Sonuç:

SVG, geleceğine inandığım bir teknoloji. Tüm tarayıcılarda, hiçbir eklenti yüklemeden XML tabanlı vektörel grafikler oluşturabilmek, bu grafiklere hem sunucu tarafında, hem de kullanıcı tarafındaki uygulamalarla müdahale edebilmek demek. AJAX uygulamalarınızda bu vektörel grafiklerin sadece belli bir bölümünü değiştirebileceğinizi bir düşünün. Mükemmel bir esneklik. 

Tabiki W3′ün 1999′dan beri üzerinde çalıştığı bu standardı Internet Explorer desteklemezse bunların hiç biri mümkün olmayacak. Microsoft, XML tabanlı vektörel grafik konusunda Silverlight’a rakip olabilecek bu teknoloji karşısında W3′ü önemser mi, göreceğiz.

Örnek bir SVG görüntüsü:
http://upload.wikimedia.org/wikipedia/commons/d/de/EuropeLocation.svg

Google Chrome nasıl bu kadar hızlı çalışıyor?

Az önce Google Chromium Blog‘da yayınlanan bir yazı bu soruya ışık tutuyor. 

Google Chrome geliştirilirken, yazılımcıların en çok dikkat ettikleri konuların başında disk yazma okuma işlemlerini minimuma indirmek geliyor. Bu ne kadar mı önemli? Yıllardır kullandığınız ve disk birleştirme işlemini bir kez dahi uygulamadığınız bir Windows kurulumunda Internet Explorer’ın kaç saniyede açıldığını bir düşünün? Ya da bilgisayarınız ilk açıldığında IE ya da Firefox’u açmayı deneyin. Açılmıyor mu? Bu büyük olasılıkla tarayıcınız yüklenirken favori listelerinizin, cache bilgilerinizin, kullanıcı ayarlarınızın, cookie bilgilerinizin, kısacası sabit diskinizde tarayıcı ile ilgili ne varsa hafızaya yüklenmesi sebebiyle karşılaştığınız bir durum. 

Peki Chrome’da ne değişti de hantal bilgisayarım daha Windows Vista’yı doğru düzgün açamamışken Chrome’a tıkladığım anda tarayıcım açılıyor?

Google tarayıcının sabit diskinizle olan ilişkisini değiştirdi. Chrome’un çalıştırdığı ana thread kesinlikle sabit diskinizle ilgilenmiyor. Hatta bu, tarayıcının geliştirilmesi sırasında Google’ın yazılımcılarına şart koştuğu bir kural: ANA İŞ PARÇACIĞI ASLA DİSKE VERİ YAZIP OKUYAMAZ. 

Bu kurala o kadar sadık kalınmış ki, bu iş parçacığının gerçekten I/O işlemleri yapıp yapmadığı, I/O hakları elinden alınarak çalıştırılmak suretiyle test edilmiş. 

Peki Chrome hiç mi diske veri yazmıyor? Elbette yazıyor ve okuyor. Fakat bunu yapan, sizin gördüğünüz kullanıcı arabiriminden ayrı bir şekilde çalışan iş parçacıkları (thread). Dolayısıyla kullanıcı arabirimi oluşturulurken bir taraftan da favorilerinizin ya da geçmiş ziyaretlerinizin yüklemesini beklemek zorunda kalmıyorsunuz. Benzer şekilde taradığınız sayfayı farklı kaydederken diğer işlemlerin devam etmesi de asenkron çalışan iş parçacıkları sayesinde gerçekleştiriliyor. 

Web’de asenkron uygulamaların ilk zamanlarında, henüz hiç bir AJAX kütüphanesi hayatımızı kolaylaştırmazken, kullanıcılara daha iyi ve hızlı bir deneyim sunabilmek için kodlamada çektiğimiz sıkıntıların bir benzeri de Chrome’un bu şekilde çalışmasının sağlanması adına yaşanmış. Bu girişimlerin başarıya ulaşıp ulaşmayacağını önümüzdeki günlerde göreceğiz.

Google Chrome güncellemesi.

Google Chrome’un yeni sürümü (0.3.154.0), yazılım geliştiriciler kanalına üye kullanıcıların (dev-channel) test etmeleri amacıyla az önce yayınlandı. 

Bu sürümde özellikle Flash animasyonlarında CPU kullanımını %100′e çıkartan ve Adobe Flash eklentilerinin çökmesine neden olan buglar ile birlikten bir çok küçük sorun da giderildi.

Fakat benim için bu sürümdeki en büyük ilerleme birçok dizüstü bilgisayarda touch pad ile scroll yapamama sorununun giderilmiş olmasıdır.



© Copyright 2010 Eren Baydemir. Tüm hakları saklıdır.