Kami mulai menggunakan GWT lebih berat dalam proyek kami, dan kinerja kompiler GWT menjadi semakin menjengkelkan.
Kami akan mulai mengubah praktik kerja kami untuk mengurangi masalah, termasuk penekanan yang lebih besar pada browser mode yang di-host, yang menghalangi kebutuhan untuk menjalankan kompiler GWT hingga waktu mendatang, tetapi itu membawa risiko sendiri, terutama dari tidak menangkap masalah dengan peramban asli hingga lebih lama dari yang kami inginkan.
Idealnya, kami ingin membuat kompiler GWT sendiri lebih cepat - satu menit untuk mengkompilasi aplikasi yang cukup kecil adalah mengambil kencing. Namun, kami menggunakan kompilasi jika mode yang cukup naif, jadi saya berharap kami dapat membuat beberapa keuntungan cepat dan mudah.
Kami saat ini menggunakan com.google.gwt.dev.Compiler sebagai aplikasi java dari target Ant semut, dengan tumpukan maksimum 256m dan banyak ruang tumpukan. Kompiler diluncurkan oleh Ant menggunakan fork = true dan Java 6 JRE terbaru, untuk mencoba dan memanfaatkan peningkatan kinerja Java6. Kami melewati kelas pengontrol utama kami ke kompilator bersama dengan classpath aplikasi, dan segera pergi.
Apa lagi yang bisa kita lakukan untuk mendapatkan kecepatan ekstra? Bisakah kita memberikan lebih banyak informasi sehingga lebih sedikit menghabiskan waktu untuk menemukan apa yang harus dilakukan?
Saya tahu kita bisa mengatakannya hanya untuk kompilasi untuk satu browser, tetapi kita perlu melakukan pengujian multi-browser, jadi itu tidak terlalu praktis.
Semua saran diterima pada saat ini.
sumber
Jika Anda menjalankan kompiler GWT dengan flag -localWorkers, kompiler akan mengkompilasi beberapa permutasi secara paralel. Ini memungkinkan Anda menggunakan semua inti dari mesin multi-core, misalnya -localWorkers 2 akan memberi tahu kompiler untuk melakukan kompilasi dua permutasi secara paralel. Anda tidak akan mendapatkan urutan perbedaan magnitudo (tidak semua yang ada di kompiler dapat diparalelkan) tetapi masih merupakan speedup yang nyata jika Anda mengkompilasi beberapa permutasi.
Jika Anda bersedia menggunakan versi trunk GWT, Anda akan dapat menggunakan mode host untuk browser apa pun (di luar mode host proses ), yang meringankan sebagian besar masalah saat ini dengan mode host. Itu tampaknya menjadi tujuan GWT - selalu berkembang dengan mode yang dihosting, karena kompilasi tidak mungkin mendapatkan besaran lebih cepat.
sumber
Meskipun entri ini sudah cukup lama dan sebagian besar dari Anda mungkin sudah tahu, saya pikir layak menyebutkan bahwa GWT 2.x menyertakan flag kompilasi baru yang mempercepat kompilasi dengan melewatkan optimisasi. Anda seharusnya tidak menggunakan JavaScript yang dikompilasi dengan cara itu, tetapi itu bisa menghemat waktu selama pembuatan berkelanjutan non-produksi.
Cukup sertakan flag: -draftCompile ke baris kompiler GWT Anda.
sumber
Berikut adalah daftar nilai user.agent yang bisa Anda atur.
(Menambahkan ini di sini karena saya terus berada di sini ketika saya mencari apa yang harus saya set untuk membuatnya hanya menghasilkan permutasi untuk chrome. Jawabannya adalah
<set-property name="user.agent" value="safari"/>
:)sumber
Di versi GWT yang lebih baru (mulai 2.3 atau 2.4, saya percaya), Anda juga dapat menambahkan
ke gwt.xml Anda untuk tujuan pengembangan. Itu akan memberi tahu kompiler GWT untuk membuat permutasi tunggal yang mencakup semua lokal dan browser. Oleh karena itu, Anda masih dapat menguji di semua browser dan bahasa, tetapi masih hanya mengkompilasi permutasi tunggal
sumber
Anda dapat menambahkan satu opsi ke bangunan Anda untuk produksi:
-localWorkers 8
- Dimana 8 adalah jumlah utas bersamaan yang menghitung permutasi. Yang harus Anda lakukan adalah menyesuaikan nomor ini dengan nomor yang lebih nyaman bagi Anda. Lihat kinerja kompilasi GWT (terima kasih atas komentar Dennis Ich).Jika Anda mengkompilasi ke lingkungan pengujian, Anda juga dapat menggunakan:
-draftCompile
yang memungkinkan kompilasi yang lebih cepat, tetapi kurang dioptimalkan-optimize 0
yang tidak mengoptimalkan kode Anda (9 adalah nilai optimalisasi maks)Hal lain yang lebih dari dua kali lipat kinerja build dan mode host adalah penggunaan disk SSD (sekarang hostmode bekerja seperti pesona). Ini bukan solusi yang murah, tetapi tergantung pada seberapa banyak Anda menggunakan GWT dan biaya waktu Anda, itu mungkin sepadan!
Semoga ini bisa membantu Anda!
sumber
Kompiler GWT sedang melakukan banyak analisis kode sehingga akan sulit untuk mempercepatnya. Sesi ini dari Google IO 2008 akan memberi Anda ide bagus tentang apa yang GWT lakukan dan mengapa itu memakan waktu begitu lama.
Rekomendasi saya adalah untuk pengembangan, gunakan Mode Host sebanyak mungkin dan kemudian hanya kompilasi ketika Anda ingin melakukan pengujian. Ini memang terdengar seperti solusi yang sudah Anda datangi, tetapi pada dasarnya itu sebabnya Mode Hosted ada di sana (baik, itu dan debugging).
Anda dapat mempercepat kompilasi GWT tetapi hanya mengkompilasi untuk beberapa browser, daripada 5 jenis yang GWT lakukan secara default. Jika Anda ingin menggunakan Mode Hosted, pastikan Anda mengkompilasi setidaknya dua browser; jika Anda mengkompilasi untuk satu browser maka kode deteksi browser dioptimalkan dan Mode Hosted tidak berfungsi lagi.
Cara mudah untuk mengonfigurasi kompilasi untuk browser yang lebih sedikit adalah dengan membuat modul kedua yang diwarisi dari modul utama Anda:
Jika
rename-to
atribut diatur sama maka file output akan sama seperti jika Anda melakukan kompilasi penuhsumber
sumber
Untuk GWT 2.x saya baru menemukan itu jika Anda gunakan
Anda bahkan dapat menentukan lebih dari satu permutasi.
sumber