Senin, 04 Mei 2015

Perbandingan Cout Dengan Printf

Pada bahasa pemrograman C++ untuk melakukan perintah cetak, umumnya adalah menggunakan perintah cout dengan menambahkan header #include<iostream> terlebih dahulu di paling atas code editor. Namun karena pada dasarnya bahasa C++ ini adalah pengembangan dari bahasa C, bahasa C++ juga dapat menggunakan header atau librari yang tersedia pada bahasa C, tetapi tidak berlaku sebaliknya.

Pada bahasa pemrograman C, untuk melakukan perintah cetak adalah menggunakan printf dengan menambahkan header #include<stdio.h>, jika kita menggunakan compiler GCC, untuk menggunakan header tersebut, kita menambahkannya dengan cara menulis #include<cstdio>. sedikit berbeda bukan? Pada artikel kali ini, saya akan mencoba menjelaskan perbedaan apa saja yang ada pada kedua perintah cetak tersebut menurut versi saya.

1. Rawan kesalahan

  • Pada penulisan fungsi printf harus menggunakan tanda '%' untuk menyesuaikan tipe data apa yang akan dicetak. Misal jika akan mencetak double, maka akan menggunakan tanda '%d', jika suatu string maka '%s'. Sehingga ditulisnya printf("%s","Hello Kasih"), atau printf("%d", 28) dan lain-lain. Untuk format seperti itu rawan terjadinya error dan kita harus mengetahui tipe data terlebih dahulu sebelum mencetaknya. 
  • Pada penulisan fungsi cout harus menggunakan operator '<<'. Berbeda dengan fungsi printf, kita tidak perlu mengetahui tipe data apa yang akan dicetak. Dengan fungsi cout, langsung secara otomatis menyesuaikan tipe data yang akan dicetak. Jadi untuk kemungkinan terjadi kesalahan atau error lebih sedikit dibanding pada penggunaan printf.
2. Kecepatan
Pada penggunaan fungsi printf, proses mencetak jauh lebih cepat dibanding menggunakan cout. Pada printf compiler tidak perlu melakukan pengecekan kembali tipe data yang sesuai yang akan dicetak, melainkan karena sudah didefinisikan sendiri oleh kita. Proses pengecekan kembali yang dilakukan oleh compiler itulah yang membutuhkan waktu. Pada penggunaan fungsi cout, kita memang dimudahkan untuk tidak mendefinisikan tipe data apa yang akan dicetak terlebih dahulu, namun justru itu adalah faktor yang mempengaruhi kinerja compiler menjadi lebih lambat. Biasanya pada kontes pemrogramman seperti TOKI (Tim Olimpiade Komputer Indonesia) bagi yang menggunakan bahasa C++, disarankan untuk menggunakan fungsi printf dari pada menggunakan fungsi cout. Berikut adalah contoh program yang membandingkan kecepatan mencetak antara fungsi cout dengan printf.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include <iostream>
#include <cstdio>
#include <ctime>
using namespace std;

int main()
{
    float start;
    start = clock();
    for(int i = 0; i < 5000; i++){
        //cout << "Hello World" << endl;
        printf("%s", "Hello World\n");
    }
    cout << "Durasi : " << ((clock() - start) / (float) CLOCKS_PER_SEC) << endl;
    return 0;
}

Pada program di atas, untuk mencoba perbedaan kecepatan antara printf dengan cout, dilakukan proses looping sebanyak 5000 kali. Dari jumlah loop tersebut sudah terlihat perbedaan waktu dalam satuan detik. Jika ingin mencoba program di atas, bisa langsung dicoba dicopy code program di atas ke www.cpp.sh untuk langsung melihat hasilnya. Sekian dan terimakasih. Semoga bermanfaat

Tidak ada komentar:

Posting Komentar