Bagi penggemar C# (termasuk saya nih), maukah anda berpindah ke F# ? ok lah, maksud saya menambah koleksi kemampuan bahasa pemrograman di CV, dengan F#? hmmm...; topik postingan saya kali ini sebenarnya saya curi dari blog coding experiments, jadi di blog itu si empunya hendak membandingkan performansi F# dengan C# (menurut saya ini belum cukup fair sih, mengingat F# masih dalam tahap research) untuk melakukan operasi yang merupakan Collatz Problem seperti ini: untuk sebarang bilangan bulat positif,
- jika bilangan tersebut adalah genap, bagi dengan 2
- jika bilangan tersebut ganjil, kali tiga dan tambah satu
seperti ini notasinya:
sebenarnya permasalahannya adalah untuk membuktikan bahwa untuk sembarang bilangan bulat positif tersebut, akan selalu berakhir pada bilangan yang sama (1) dengan persamaan di atas ($500 bagi yang bisa membuktikan persamaan tersebut selalu berakhir di 1 untuk semua bilangan bulat positif). jadi kalau misalnya ada masukan angka 7, maka akan dihasilkan 7 -> 22 -> 11 -> 34 -> 17 -> 52 -> 26 -> 13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 ->1, pertanyaanya bilangan berapa (yang merupakan bilangan di bawah sejuta) yang akan menghasilkan rantai eksekusi terpanjang?
kemudian dia menanyakannya kepada sebuah mesin bernama komputer, karena dia nggak bisa bahasa mesin, maka dia memanfaatkan jasa 2 orang interpreter/penerjemah, karena si dia memang menguasai dua bahasa berbeda, dan masing - masing penerjemah ini bisa bahasa mesin (halah..ngelantunr gini), ya akhirnya dia bertanya pada penerjemah pertama, bahasa pertama yang digunakannya adalah dengan bahasa prancis yang indah, eh maksud saya F# yang elegan, dan kepada penerjemah yang kedua adalah bahasa jawa ngoko alus, kalau boleh mengandaikan c/c++ adalah ngoko-nya :P, yaitu C# (FYI: ngoko alus masih di bawah kromo). monggo, kito persani (mari, kita lihat)
1. F# yang elegan ( 18 loc)
saya menggunakan cara yang sama baik untuk F# maupun C# dalam mendapatkan data waktu, yaitu dengan model C#, and then, di run, dan ini dia hasilnya:
2. C# (48 loc)
and, Boom!
kesimpulan, pertama, C# lebih cepat +/- 13 kali dibandingkan F# dengan menggunakan algoritma seperti di atas, bisa jadi algoritma yang berbeda akan menghasilkan kesimpulan yang berbeda, kedua, jumlah baris kode F# lebih sedikit 2.7 kali lipat dari C# (dengan algoritma seperti di atas). jadi C# lebih baik dari F# nu, hmm... mungkin memang demikian untuk saat ini dari segi performansi, tapi yang perlu menjadi catatan adalah F# masih dalam tahap research, dan di sana ada orang - orang hebat semacam Don Syme yang siap meningkatkan performa F#, disamping itu bukankah jumlah loc yang lebih sedikit memperkecil kemungkinan kesalahan code, dan mempermudah trace code jika terjadi kesalahan. jadi, mau nambah mainan gak? terserah anda! :)
maraji': wiki, coding-experiments
catatan : saya menguji di OS :Windows Vista Business 32-bit; Processor = Intel Pentium Dual-Core T2130 1.86 GHz, RAM : 766 M