Elm Compiler berjalan selamanya, komputer semakin panas

100

Saya tidak yakin apa yang menyebabkan masalah ini, tetapi dalam sebuah proyek, saya sedang membangun, kompilator membutuhkan waktu berjam-jam hanya untuk mengkompilasi modul. Ukuran total basis kode saya adalah 352KB, tetapi tidak ada modul yang berukuran lebih dari 10KB. Saya menggunakan port Asli, tetapi sangat sepele; Aku hanya mengambilnya Date.now().

Apakah ada hal terkenal yang akan menyebabkan kompilator elm membutuhkan waktu lama untuk dikompilasi? Saya tidak memiliki banyak dependensi, tetapi saya sering menggunakan Html. Saya akan sangat menghargai petunjuk apa pun tentang apa yang akan menyebabkan ini.

Edit

Jadi ternyata ekspresi huruf besar akan menyebabkan pengoptimal membutuhkan waktu lama, mulai 0,16. Berikut diskusi tentang Elm-Diskusikan mengangkat masalah, dan inti dari kasus yang cocok .

Saya kira untuk menjadi bertele-tele dan untuk menjaga wortel di luar sana, mengapa penyusun elm mengambil rute ini untuk pencocokan kasus? Apa mesin yang mendasari yang terjadi di sini? Mengapa kompilator memerlukan waktu lebih dari satu jam untuk mengoptimalkan 60+ kecocokan pola pada pernyataan kasus?

Athan Clark
sumber
4
Saya penasaran. Jenis pengoptimalan apa yang dilakukan oleh kompilator Elm sehingga membutuhkan waktu berjam-jam untuk mengompilasi ekspresi kasus? Ekspresi kasus Anda tampaknya tidak terlalu besar (setidaknya tidak cukup besar untuk komputer). Ini berarti bahwa Elm compiler memiliki algoritma pengoptimalan yang benar-benar sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat sangat buruk algoritma pengoptimalan. Misalnya, bayangkan berapa lama waktu yang dibutuhkan untuk menyusun ekspresi kasus dengan semua 721 pokémon.
Aadit M Shah
4
Saya kira jawabannya ada di sini , mungkin Anda harus mencoba menambahkan haskelltag dan melihat apakah orang-orang haskell dapat mengungkapkan sesuatu kepada kami.
halfzebra
5
Saya pikir Anda harus mengajukan pertanyaan baru di tempat yang lebih baik untuk memperbaiki masalah kasus, dan menjawab pertanyaan Anda sendiri dengan hanya menjelaskan bahwa masalah kasus diketahui lambat. Mengenai alasannya, kode yang relevan tampaknya ada di sini: github.com/elm-lang/elm-compiler/blob/master/src/Optimize Makalah Scott & Ramsey yang dikutip menjelaskan bagaimana heuristik "faktor percabangan kecil" sangat lambat. Dalam kode di atas yang heuristik digunakan sebagai tiebreak ketika default kecil mengikat. Jadi, saya bertaruh dalam contoh buruk Anda, banyak ikatan default kecil dan kami mengalami kasus yang mengerikan. Pendapat saya: Elm seharusnya tidak menggunakan SBF sebagai faktor, berhenti penuh.
sclv
24
Bisakah Anda menjawab sendiri pertanyaan ini sehingga tidak lagi muncul di daftar yang tidak terjawab?
Julian Leviston
5
Apakah kompilasi itu benar-benar selesai?
Layak7

Jawaban: