Posts

Benchmarking Go1.3.3 dan Go1.4

Image
Bahasa pemrograman Go1.4 telah rilis. Mari kita lihat performa antara Go1.3.3 dengan Go1.4. Dengan menggunakan tool autobench . Install Go1.4 menggunakan gvm. sudo apt-get install curl git mercurial make binutils bison gcc bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) source ~/.gvm/scripts/gvm   gvm listall gvm install go1.4 gvm use go1.4 go version Install autobench tool-nya. 1.Buat direktori baru dan masuk lah kedalam direktori tersebut.  2. Install dengan mengunakan keyword git clone -b autobench-next https://github.com/davecheney/autobench.git     3.Masuk kedalam direktori autobench, lalu beri keyword make untuk melakukan benchmarking. Berikut adalah hasil benchmarking yang dilakukan 64-bit linux, Intel Core i5 3337u @1.80Ghz  # go1 benchmark               ...

GO : Range

Bahasa permrograman Go, memiliki range. Kemampuan range adalah range mengiterasi lebih dari elemen dalam berbagai data struktur package main import "fmt" func main() { //Disini kita menggunakan range untuk menjumlahkan angka-angka dalam slice. Array pun bekerja seperti ini juga. nums := []int{2, 3, 4} sum := 0 for _, num := range nums { sum += num } fmt.Println("sum:", sum) //Range didalam arrray dan slice menyediakan index dan nilai untuk setiap masukan. Diatas kita tidak membutuhkan index, jadi kita kosongkan saja. Terkadang kita membutuhkan indeks sekalipun. for i, num := range nums { if num == 3 { fmt.Println("index:", i) } } //Range dalam map mengiterasi lebih key/value pasangan. kvs := map[string]string{"a": "apple", "b": "banana"} for k, v := range kvs { fmt.Printf("%s -> %s\n", k,...

GO : Random Numbers

Bahasa pemrograman Go memiliki package math/rand yang berfungsi untuk mendapatkan nilai random. package main import "fmt" import "math/rand" func main() { //Dengan menggunakan keyword rand.Intn() akan menampilkan hasil random sebuah bilangan integer fmt.Print(rand.Intn(100), ",") fmt.Print(rand.Intn(100)) fmt.Println() //Dengan menggunakan keyword rand.Float64() akan menampilkan hasil random sebuah bilangan float64, berawal dari 0.0 < f < 1.0 fmt.Println(rand.Float64()) fmt.Print((rand.Float64()*5)+5, ",") fmt.Print((rand.Float64() * 5) + 5) fmt.Println() //Keyword rand.NewSource() Untuk membuat generator pseudorandom deterministik, memberikan seed yang mudah dikenal s1 := rand.NewSource(42) r1 := rand.New(s1) fmt.Print(r1.Intn(100), ",") fmt.Print(r1.Intn(100)) fmt.Println() //jika membuat nilai seed yang sama seperti yang diatas maka aka...

Fitur fmt, string, dan math dalam Bahasa Pemrograman Go

Fitur “fmt” Func Println dan Scan Sebuah fitur yang mengimplementasikan format I/O dengan fungsi analog seperti printf atau scanf pada C. Format ini berasal dari C namun lebih simple. Format ini dapat diakses dengan menuliskan import “fmt” . Contoh cara pemakaian : Package main Import "fmt" Func main (){ Var a string Fmt.println("what is your name?") Fmt.scan(&a) //disimpan dalam a Fmt.println("hi", a) } input : bryan output : hi bryan //fmt.Println = untuk mengeluarkan output dari komputer. //fmt.Scan = untuk menerima input dari user. Fitur “strings” import “strings”   Func Repeat Fitur ini berguna untuk mengembalikan/mengulangi sebuah string baru seperti “copy-paste”. strings.Repeat(“[string baru]”, [jumlah pengulangan]) “string baru” akan diulang sebanyak jumlah pengulangan. Contoh cara pemakaian : package main Import ( "fmt" ...

GO : Sorting

Bahasa pemrograman Go memiliki package sort yang mengimplementasikan sorting untuk builtin dan type yang ditentukan user. package main import "fmt" import "sort" func main() { //Metode sort specific kebuiltin type; berikut contoh untuk string, dan integer. Dengan masing masing menggunakan keyword sort.Strings() dan sort.Ints() yang dipanggil dari package sort. strs := []string{"c", "a", "b"} sort.Strings(strs) fmt.Println("Strings:", strs) ints := []int{7, 2, 4} sort.Ints(ints) fmt.Println("Ints: ", ints) //Kita juga bisa menggunakan sort untuk mengecheck jika slice telah dalam keadaan terurut. Dengan keyword sort.AreSorted() memeriksa apakah data telah terurut, jikat terurut maka print true jika tidak maka print false. s := sort.IntsAreSorted(ints) fmt.Println("Sorted: ", s) } Output Strings: [a b c] Ints: [2 4 7] Sorted: true Sour...

GO : Channels

Bahasa pemrograman Go, memiliki channels yang berguna sebagai saluran untuk menghubungkan goroutines secara bersamaan. Anda dapat mengirim nilai-nilai ke dalam saluran dari satu goroutine dan menerima nilai-nilai ke dalam goroutine lain. package main import "fmt" func main() { //Membuatchannel baru dengan menggunakan keyword make(chan val-type). messages := make(chan string) //Mengirim nilai ke dalam channels menggunakan keyword channel <- syntax. Disini kita mengirim “ping” ke pesan channel yang dibuat diatas, dari goroutine baru. go func() { messages <- "ping" }() //Sebuah <- channel syntax menerima nilai dari channel. Disini kita akan menerima pesan “ping” dan print out. msg := <-messages fmt.Println(msg) } Ketika dijalankan, program pesan “ping” berhasil melewati dari satu goroutine ke goroutine yang lainnya via channel yang dibuat tadi. Secara default mengirim dan menerima blok sampai kedua pengirim...

GO : Goroutines

Dalam bahasa pemrograman Go, mendukung adanya goroutine. Sebuah goroutine adalah thread yang ringan dari eksekusi. package main import "fmt" func f(from string) { for i := 0; i < 3; i++ { fmt.Println(from, ":", i) } } func main() { //Anggap saja kita memiliki sebuah fungsi f(s). Hal ini adalah yang memanggil dengan cara biasa, dan menjalankannya serempak. f("direct") //Untuk memanggil fungsi ini dalam goroutine, gunakan go f(s). Goroutine baru ini akan mengeksekusi bersamaan dengan memanggil satu . go f("goroutine") //Bisa juga memulai goroutine untuk fungsi panggilan anonim. go func(msg string) { fmt.Println(msg) }("going") //Dua goroutines ini berjalan secara asynchronously di goroutines terpisah sekarang, jadi eksekusi jatuh sampai di sini. Kode Scanln ini membutuhkan kita menekan tombol sebelum keluar program. var input string fmt.Scanln(...