-- Go

Go Püf #2 : Go ile Çalışma Süresini Ölçme

Merhabalar,

Geliştirdiğimiz uygulamalarda kodun çalışma süresini hesaplamak performans test ve analizlerini için önemli bir gereksinimdir.

GO da bu işlemi gayet basit bir mantıkla gerçekleştirmeye izin vermektedir.

Örnek:

package main

import (
	"fmt"
	"log"
	"math/big"
	"time"
)

func main() {

	// Şu anın zaman bilgisini alıyoruz.
	start := time.Now()

	// Matematiksel işlem için big.Int'in nesnesini üretiyoruz.
	r := new(big.Int)

	// big.Int içerisindeki matematiksel Binom işlemini gerçekleştirecek Binomial() metodunu çağırıyoruz.
	// Amaç kodun çalışma süresini uzatmak!
	fmt.Println(r.Binomial(1000, 10))

	// Başlangıç süresini atadığımız start değişkenini time.Since() metoduna vererek başlangıç-bitiş süresini hesaplatıyoruz.
	// Elde edilen değer iki işlemin arasında geçen süredir.
	elapsed := time.Since(start)
	log.Printf("Binomial took %s", elapsed)
}

İşlem çıktısı;

golang-executiontime-goder

Peki kodun çalışma süresini bir GO metodu içerisinde nasıl gerçekleştirebiliriz?

Örnek:

func timeTrack(start time.Time, name string) {
    elapsed := time.Since(start)
    log.Printf("%s took %s", name, elapsed)
}

Oluşturduğumuz timeTrack adındaki “çalışma süresi hesaplayabilen” yeteneğe sahip metodu başka bir metod içerisinde nasıl kullanabileceğimize bakalım;

func factorial(n *big.Int) (result *big.Int) {
    defer timeTrack(time.Now(), "factorial")
    // ... diğer kodlar.
    return n
}

Kaynak : https://coderwall.com/p/cp5fya/measuring-execution-time-in-go

Yorumla

Yorum