Welcome to Geeks Portal Sign in | Join | Help
in
 
 

hakimrie

F# vs C# (on Collatz Conjecture)

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,

  1. jika bilangan tersebut adalah genap, bagi dengan 2
  2. jika bilangan tersebut ganjil, kali tiga dan tambah satu

seperti ini notasinya:

  image

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)

image

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:

image

2. C# (48 loc)

image

and, Boom!

image

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

Share this post: | | | |
Published Mar 29 2008, 04:53 PM by hakimrie
Filed under: ,

Comments

No Comments
 
 
Powered by Community Server (Commercial Edition), by Telligent Systems
Copyright © INDC, 2006. All rights reserved.