Friday, April 27, 2007

Bookmark April 27 2007

Traits

Sebelumnya di blog ini sudah pernah di-posting artikel tentang Just in Time Compiler sebagai salah satu cara untuk meningkatkan performance (kecepatan) eksekusi kode Actionscript 3.0 oleh Flash Player 9 (baca di Bookmark April 19 2007).

Masih ada mekanisme lain yang membantu proses peningkatan performance tersebut, yaitu Traits.

Konsep Traits diciptakan di Actionscript 3.0 untuk menanggulangi permasalahan yang kerap terjadi di Actionscript versi sebelumnya.

Pada Actionscript 1.0 / 2.0 proses pencarian nama suatu object merupakan sesuatu yang melelahkan dan memakan waktu bagi Flash Player terutama pencarian object termasuk dengan property-nya (termasuk dengan semua variable, function dan methode yang terdapat di object tersebut) dari dalam suatu framework yang mempunyai package raksasa yang terdiri dari banyak object class.

Sedangkan di Actionscript 3.0 proses tersebut berlangsung lebih efisien dan lebih hemat waktu karena segala properties yang berasal dari superclass (inherited) telah di-copy-kan kedalam traits yang terdapat disetiap subclass. Pemahaman traits itu sendiri sepertinya akan terasa abstract bagi setiap programmer. Sekilas traits lebih mirip sebagai properties, tetapi tidak akan dapat diakses/ viable di daftar properties suatu object class.

Traits di AVM 2 (virtual machine untuk Flash Player 9 - AS 3.0) berfungsi untuk menyediakan segala informasi detail tentang layout dan isi dari suatu class. Dengan informasi tersebut AVM 2 dapat mengurangi waktu eksekusi kode secara signifikan karena dapat menginstruksikan langsung suatu properties/ methode object ke machine tanpa menghabiskan waktu mencari ulang representasi superclass yang mewariskan properties tersebut.

Kehadiran Traits ini terasa dengan peningkatan performance dan pengurangan pemakaian memory (memory usage) Flash Player 9. Dan "penampakan" suatu object di memory system akan lebih kecil secara nyata dibanding dengan "penampakan" object serupa di versi terdahulu dari Actionscript. Contohnya : jika suatu class dideklarasikan secara non dynamic (sealed) maka instance dari class tersebut tentu tidak memerlukan hash table sebagai penampung properties yang ditambahkan secara dynamic, sehingga akan lebih sedikit menampung pointer ke traits yang ada di object tersebut. Hasilnya sebagai perbandingan, bila di Actionscript 2.0 object tersebut memerlukan 200 bytes untuk me-representasi-kan dirinya maka cukup 20 bytes saja yang diperlukan di Actionscript 3.0 untuk melakukan hal yang sama.



Catatan :
  • Dari beberapa sumber disebutkan tidak ada jaminan bahwa feature Traits ini akan tetap digunakan atau diganti/ dibuang pada AVM generasi selanjutnya.

  • Referensi lain tentang hasil benchmark perbandingan waktu eksekusi antara Actionscript 2.0 vs Actionscript 3.0 bisa dicari melalui search engine. Benchmark lain diantaranya yang pernah dibahas oleh Grant Skinner tentang perbandingan loop dengan type Number di AS 2 vs AS 3.0, atau loop antara int, uint dan Number pada Juni lalu.
  • No comments: