Top Banner
ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA Esti Mulyawati [email protected] Gita Listya A [email protected] M. Nasiruddin [email protected] Rian Dwi P [email protected] Septri Nur Ithmam [email protected] Shelly Tamara [email protected] Program Studi Ilmu Komputer Jurusan Ilmu Komputer dan Elektronika Universitas Gadjah Mada 2013 Abstrak Dalam perhitungan data pemilih aktif di Indonesia, terkadang dibutuhkan suatu sistem untuk mempermudah prosesnya. Proses tersebut bergantung pada performa sistem perhitungan yang digunakan untuk dapat bekerja secara cepat, tepat, dan akurat. Pada kesempatan kali ini penulis mengembangkan sistem untuk menjalankan proses tersebut menggunakan bahasa pemrograman PHP. Hal tersebut sulit dipenuhi apabila sistem yang dikembangkan menggunakan singlethreading. Untuk mengatasi masalah tersebut, penggunaan multithreading dengan pthreads yang terbagi dalam beberapa klaster secara parallel dan menggunakan komputer dengan spesifikasi yang cocok merupakan suatu solusi. Maka dari itu, pada makalah ini akan dibahas mengenai analisa perbandingan antara proses perhitungan suara menggunakan aplikasi php singlethreading dan multithreading pada spesifikasi komputer yang berbeda, yang bertujuan untuk mengetahui proses perhitungan suara pemilu mana dan spesifikasi seperti apa yang dibutuhkan komputer agar dapat mengeksekusi lebih cepat dalam menghasilkan data pemilih aktif pemilu perhitungan suara. Kata Kunci: php, pemilu, pthreads, single threading, multithreading, spesifikasi komputer I. Pendahuluan Beberapa tahun terakhir ini, arsitektur komputer cenderung berevolusi menjadi komputer paralel. Sistem multiprocessor modern yang dikenal sebagai multicore sedang menjadi tren. Prosesor-prosesor multicore sedang mendominasi pasar. Prosesor-prosesor multicore dengan mudah dijumpai pada komputer desktop, laptop dan juga server. Selain itu, prosesor multicore juga mengisi segmen pasar cluster supercomputer. Diadopsinya prosesor multicore pada kebanyakan sistem-sistem komputer berdampak pada bagaimana perangkat- perangkat lunak harus dikembangkan. Bahwasanya, perangkat-perangkat lunak yang nantinya berjalan pada komputer yang mutakhir dianggap harus mampu memanfaatkan sistem multiprocessor. Artinya, perangkat lunak harus berjalan secara multithreading. Tidak hanya perangkat lunak saja, namun sistem yang dikembangkan juga harus mendukung teknik pemrograman multithreading.
14

ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

Feb 03, 2023

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

ANALISIS PERBANDINGAN WAKTU

PERHITUNGAN DATA PEMILIH AKTIF PEMILU

ANTARA SINGLETHREADING DAN

MULTITHREADING DI PHP PADA SPESIFIKASI

KOMPUTER YANG BERBEDA

Esti Mulyawati [email protected]

Gita Listya A [email protected]

M. Nasiruddin [email protected]

Rian Dwi P [email protected]

Septri Nur Ithmam [email protected]

Shelly Tamara [email protected]

Program Studi Ilmu Komputer

Jurusan Ilmu Komputer dan Elektronika

Universitas Gadjah Mada

2013

Abstrak

Dalam perhitungan data pemilih aktif di Indonesia, terkadang dibutuhkan suatu sistem

untuk mempermudah prosesnya. Proses tersebut bergantung pada performa sistem perhitungan

yang digunakan untuk dapat bekerja secara cepat, tepat, dan akurat. Pada kesempatan kali ini

penulis mengembangkan sistem untuk menjalankan proses tersebut menggunakan bahasa

pemrograman PHP. Hal tersebut sulit dipenuhi apabila sistem yang dikembangkan menggunakan

singlethreading. Untuk mengatasi masalah tersebut, penggunaan multithreading dengan

pthreads yang terbagi dalam beberapa klaster secara parallel dan menggunakan komputer dengan

spesifikasi yang cocok merupakan suatu solusi. Maka dari itu, pada makalah ini akan dibahas

mengenai analisa perbandingan antara proses perhitungan suara menggunakan aplikasi php

singlethreading dan multithreading pada spesifikasi komputer yang berbeda, yang bertujuan

untuk mengetahui proses perhitungan suara pemilu mana dan spesifikasi seperti apa yang

dibutuhkan komputer agar dapat mengeksekusi lebih cepat dalam menghasilkan data pemilih

aktif pemilu perhitungan suara.

Kata Kunci: php, pemilu, pthreads, single threading, multithreading, spesifikasi komputer

I. Pendahuluan

Beberapa tahun terakhir ini, arsitektur

komputer cenderung berevolusi menjadi

komputer paralel. Sistem multiprocessor

modern yang dikenal sebagai multicore

sedang menjadi tren. Prosesor-prosesor

multicore sedang mendominasi pasar.

Prosesor-prosesor multicore dengan mudah

dijumpai pada komputer desktop, laptop dan

juga server. Selain itu, prosesor multicore

juga mengisi segmen pasar cluster

supercomputer.

Diadopsinya prosesor multicore pada

kebanyakan sistem-sistem komputer

berdampak pada bagaimana perangkat-

perangkat lunak harus dikembangkan.

Bahwasanya, perangkat-perangkat lunak

yang nantinya berjalan pada komputer yang

mutakhir dianggap harus mampu

memanfaatkan sistem multiprocessor.

Artinya, perangkat lunak harus berjalan

secara multithreading. Tidak hanya perangkat

lunak saja, namun sistem yang dikembangkan

juga harus mendukung teknik pemrograman

multithreading.

Page 2: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

Dengan pemrograman multithreading

pada sistem komputer berbasis multicore

diharapkan program yang dikembangkan

dapat meningkatkan kinerja komputasinya.

Pemrograman paralel ini sangat signifikan

manfaatnya untuk mempersingkat waktu

eksekusi algoritma yang memiliki

kompleksitas tinggi. Waktu eksekusi dapat

dikurangi secara signifikan oleh komputasi

berkinerja tinggi pada sistem komputer

berbasis multicore. Komputasi yang

berkinerja tinggi dapat diperoleh jika inti-inti

(cores) pada prosesor tersebut dimanfaatkan

secara efisien untuk komputasi algoritma

yang benar-benar diperlukan. Ini artinya,

pemrograman harus dapat menekan biaya

komputasi tambahan (overhead). Jadi teknik

pemrograman paralel yang efisien harus

diterapkan.

Salah satu sistem yang potensial untuk

memanfaatkan prosesor-prosesor multicore

dan teknik pemrograman multithreading

adalah Sistem Perhitungan Data Pemilih

Aktif di Indonesia untuk keperluan pemilihan

umum (PEMILU) dalam skala kabupaten,

provinsi maupun nasional. Dengan melihat

skala permasalahan yang terbesar, penulis

melakukan pengembangan dan pengujian

Sistem Perhitungan Data Pemilih Aktif dalam

skala nasional yang datanya diklarifikasikan

berdasarkan umur, kabupaten dan provinsi.

Setiap komputer tempat pemungutan

suara (TPS) mengirimkan hasil perhitungan

data pemilih ke server KPU kecamatan

dilanjutkan ke server KPU kabupaten,

kemudian diteruskan ke server KPU provinsi

dan berakhir di KPU Pusat, yang kemudian

komputer KPU tersebut yang mengakumulasi

jumlah data pemilih di Indonesia yang masih

aktif. Jika komputer tersebut hanya

memanfaatkan satu core untuk

mengakumulasi jumlah data pemilih

keseluruhan maka akan membutuhkan waktu

yang lama. Ditambah problematika terhadap

sistem yang masih mengandalkan single-

threading. Untuk itu akan dilakukan

pengujian untuk melihat waktu perhitungan

data pemilih aktif di Indonesia yang begitu

besar dengan membandingkan sistem yang

memanfaatkan teknik pemrograman

singlethreading dan multithreading dalam

beberapa spesifikasi komputer yang berbeda.

Teknik pemrograman multithreading

sebelumnya banyak diaplikasikan dalam

bahasa pemrograman C dan Java, akan tetapi

di sini penulis akan mengaplikasikan

pengembangan dan pengujian sistem ini

dalam bahasa pemrograman PHP. Tujuan

utama pengembangan dalam bahasa

pemrograman PHP adalah sebagai bahan

pembelajaran baru dan dengan harapan

penelitian ini akan menjadi inspirasi untuk

penelitian selanjutnya.

II. Landasan Teori

2.1 Perhitungan Data Pemilih

Pemilihan Umum untuk skala daerah,

kabupaten, maupun provinsi merupakan

agenda rutin demokrasi di Indonesia kepala

daerah bahkan presiden. Diharapkan dengan

adanya PEMILU ini dapat menghasilkan

pemimpin yang sesuai dengan keinginan

rakyat dan berkualitas serta memajukan

daerah tersebut.

Sebelum diadakannya PEMILU, KPU

tiap kabupaten harus mengumpulkan data

pemilih yang nantinya akan diakumulasi oleh

server KPU Pusat. Proses perhitungan data

pemilih awalnya dilakukan dari tiap-tiap TPS

(Tempat Pemungutan Suara), hasil

perhitungan data pemilih dari tiap TPS

dikirim ke kecamatan untuk direkap

berdasarkan jumlah data pemilih yang masih

aktif dengan diklarifikasikan berdasarkan

umur di bawah kecamatan tersebut.

Kemudian hasil perhitungan data pemilih

yang masih aktif tersebut diteruskan ke server

KPU Kabupaten, yang selanjutnya akan

berakhir pada server KPU Pusat dan

disanalah perhitungan data pemilih di

Indonesia akan diakumulasi total. Proses

pengiriman rekapitulasi data pemilih yang

masih aktif di Indonesia digambarkan pada

gambar 2.1 berikut.

Page 3: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

Gambar 2. 1 Sistem Pengiriman

Bertahap

2.3 Singlethread dan Multithread

Singlethread adalah sebuah lightweight

process (proses sederhana) yang mempunyai

thread tunggal yang berfungsi sebagai

pengendali/ controller.

Multithread berasal dari dua kata yakni

multi (banyak) dan thread (benang atau alur).

Multithread tidak sama dengan multiproses.

Multiproses adalah melakukan beberapa

pekerjaan dalam waktu yang sama dimana

kegagalan pada satu proses tidak terlalu

mempengaruhi proses lainnya, sedangkan

multithread adalah melakukan dua pekerjaan

secara paralel dengan membagi-baginya

dalam beberapa task dimana kegagalan pada

satu task akan sangat mempengaruhi task

lainnya.

Keuntungan dari sistem yang menerapkan

multithreading adalah meningkatkan respon

dari pengguna, mengizinkan sebuah aplikasi

untuk mempunyai beberapa thread yang

berbeda dalam lokasi memori yang sama,

membagi memori dan sumber daya sehingga

lebih ekonomis, dan memberdayakan utilisasi

arsitektur multiprocessor dimana setiap

thread dapat berjalan secara paralel di atas

processor yang berbeda.

2.4 PHP

PHP Hypertext Preprocessor adalah

bahasa server-side programming yang kuat

untuk membuat halaman web yang dinamis

dan interaktif. Sintak PHP mirip dengan

bahasa Perl dan C. PHP biasanya sering

digunakan bersama web server Apache di

beragam sistem operasi. Adapun cara kerja

PHP dapat dilihat pada gambar 2.2.

Pada gambar 2.2 PHP disisipkan dalam

HTML dengan tag <?php..?> atau <?..?>.

Keterangan gambar 2.2 adalah sebagai

berikut :

1. User meminta request via web

browser ke web server.

2. Web server akan mengenali sebagai

file PHP (.php,.php3,.phtml).

3. File PHP dikirim ke engine PHP.

4. Output (hasil) dari proses didalam

engine PHP dalam bentuk plain

HTML (HTML biasa).

5. Dokumen hasil eksekusi dikirim

balik ke web server.

6. Web server meneruskan ke browser

sebagai respons dari request untuk

ditampilkan.

Gambar 2. 2 Cara Kerja PHP

(Sunyoto, 2007)

2.5 PECL

PECL adalah sebuah tempat

penyimpanan dari ekstensi PHP yang

disediakan melalui PEAR sistem packaging.

Berikut akan dijelaskan bagaimana cara

untuk mendapatkan dan menginstal ekstensi

PECL.

Petunjuk ini mengasumsikan bahwa

phpsrcdir adalah sebuah path dari distribusi

ke PHP source dan extname adalah nama

ekstensi PECL. Petunjuk ini juga familiar

dengan PEAR command. Informasi di PEAR

Page 4: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

manual untuk PEAR command juga berlaku

untuk PECL command.

Agar berguna, shared extention harus

dibangun, diinstal, dan di-load. Metode yang

dijelaskan di bawah menyediakan berbagai

instruksi tentang bagaimana membangun dan

menginstal ekstensi, tetapi mereka tidak

secara otomatis dapat me-load. Ekstensi

dapat di-load dengan menambahkan ekstensi

ke file php.ini atau melalui penggunaan dl()

function.

Ketika membangun modul PHP, sangat

penting untuk memiliki tools (autoconf,

automake, libtool, dll).

2.6 Posix Thread (Pthread)

Posix Thread atau lebih dikenal dengan

Pthread adalah Object Oriented API

(Application Programming Interface) yang

memungkinkan multithreading di PHP.

Pthread mencakup semua alat yang

dibutuhkan untuk membuat aplikasi

multithreaded pada web atau console.

Aplikasi PHP dapat membuat (create),

membaca (read), menulis (write),

mengeksekusi (execute) dan melakukan

sinkronisasi dengan Thread, Workers dan

Stackables.

A Thread Object: Pengguna dapat

mengimplementasikan thread dengan

memperpanjang deklarasi thread yang

disediakan oleh Pthread. Setiap anggota

dapat ditulis dan dibaca oleh setiap konteks

dengan mengacu pada thread tersebut.

Konteks apapun juga dapat melaksanakan

setiap metode atau fungsi yang bersifat publik

dan private. Jalannya metode dari

implementasi tersebut diekseskusi pada

thread yang terpisah ketika metode awal

implementasi dipanggil dari konteks (thread

atau process) yang membuatnya. Hanya

konteks yang sebuah thread tersebut yang

dapat memulai dan bergabung dengan

Pthread.

A Worker Object: A Worker Thread

memiliki keadaan yang tetap, dan akan

tersedia dari perintah untuk memulai sampai

obyek keluar dari scope, atau shutdown

secara eksplisit. Setiap konteks dapat

melewatkan obyek tipe Stackable ke Worker,

yang akan dieksekusi oleh Worker di Thread

yang terpisah. Jalannya metode Worker

dieksekusi sebelum obyek pada tumpukan,

sehingga hal tersebut dapat menginisialisasi

sumber daya Stackables yang dibutuhkan.

A Stackable Object: A Stackable Object

dapat membaca atau menulis dan

mengeksekusi Worker selama eksekusi

berlangsung, dan hanya menyediakan

referensi Stackables ke obyek yang sesuai

sebelum runtime. Selain itu, konteks ke

Stackable dapat membaca, menulis dan

mengeksekusi metode sebelum, selama dan

setelah eksekusi.

Stackable, Thread atau Worker Object

dapat dianggap dan harus digunakan sebagai

Threaded stdClass: Thread, Worker dan

Stackable semua memiliki cara dan konteks

yang sama. Pada setiap obyek yang

dimaksudkan untuk digunakan di bagian

aplikasi multi-threaded, kita harus

memperpanjang deklarasi Stackable , Thread

atau Worker. Yang berarti mereka harus

menjalankannya tapi mungkin tidak pernah

dieksekusi, melainkan akan sering menjadi

kasus yang obyeknya digunakan dalam multi-

thread yang dimaksudkan untuk eksekusi.

Dengan begitu berarti konteks (Thread/

Worker/ Stackable / Process) dapat

membaca, menulis dan mengeksekusi

anggota Object Threaded sebelum, selama,

dan setelah eksekusi.

III. Metodologi Penelitian

3.1 Tahapan Penelitian

Pada penelitian ini, dijelaskan tentang

perbandingan performansi antara

penghitungan pemilu menggunakan single

threading dengan multithreading pada php.

Penghitungan pemilu multithreading ini

sendiri menggunakan pthread. Proses

pengerjaan tersebut digambarkan dengan

skema berikut ini.

Page 5: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

Gambar 3. 1 Tahapan Penelitian

Di dalam implementasi proses

perhitungan jumlah pemilih tetap yang

dilakukan pada aplikasi PHP dengan

menggunakan multithreading dan single

threading, dapat menghasilkan masing-

masing waktu yang diperoleh dari hasil

kecepatan perhitungan masing-masing

thread.

Perbedaan hasil dari waktu proses

perhitungan jumlah pemilih tetap

menggunakan kedua metode thread yang

dilakukan menghasilkan masing-masing

waktu perhitungan. Dari hasil tersebut bisa

dibuat selisih waktu yang dihasilkan dari

waktu perhitungan kedua metode single

threading dan multithreading menggunakan

pthread.

IV. PERANCANGAN SISTEM

4.1 Topologi Sistem

Gambar 4.1 Topologi Perhitungan

Data Pemilih

TPS pada diagram alur sebagai slave yang

berperan sebagai eksekutor yang melakukan

proses pengeksekusian input data. Sedangkan

yang berlaku sebagai node master adalah

KPU Desa, karena berperan untuk

menyampaikan data dari TPS menuju server

di KPU Kecamatan.

Penelitian ini terpusat pada server pusat

KPU karena pada server pusat ini terdapat

proses penyimpanan dan pengeksekusian

data. Proses penyimpanan data melibatkan

data provinsi, kabupaten, kelompok umur dan

jumlah data pemilih yang aktif di seluruh

Indonesia.

Pembuatan laporan

Kesimpulan

Analisa

Mengerjakan coding PHP multithreading menggunakan pthread

Mengerjakan coding PHP single threading

Instalasi Browser, Xampp, Notepad++

Studi Literatur

Page 6: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

4.2 Perancangan Proses

Sistem ini digunakan untuk melakukan

pengujian perhitungan data pemilih aktif di

Indonesia. Penulis menguji sistem ini dengan

melakukan perbandingan dengan

menggunakan phtread dan menerapkan

metode singlethreading dan multithreading,

serta mengimplementasikannya pada

sejumlah komputer dengan spesifikasi yang

berbeda.

Langkah pertama yang dilakukan adalah

membuat sekumpulan dummy data dengan

pengelompokkan provinsi, kabupaten,

kelompok umur, dimana satu provinsi terdiri

dari beberapa kabupaten dengan masing-

masing data pemilih yang dikelompokan lagi

berdasarkan kelompok umur. Sementara itu

data yang diujicobakan masih berupa dummy

data karena data pemilu bersifat private dan

rahasia.

Langkah kedua adalah

mengimplementasikan dua sistem dengan

menggunakan metode yang berbeda yakni

singlethreading dan multithreading untuk

diuji perbandingannya. Thread ini

diaplikasikan dengan bahasa pemrograman

PHP.

Selain perbandingan threading, dilakukan

juga analisis sistem perhitungan data pemilih

aktif yaitu dengan menguji sistem pada

beberapa komputer dengan spesifikasi

berbeda dan hasil yang didapat dapat

membuktikan apakah spesifikasi komputer

dapat mempengaruhi kecepatan komputasi

perhitungannya.

4.3 Perancangan Basis Data

a. Tabel Provinsi

Tabel provinsi digunakan untuk

menyimpan data daftar provinsi di Indonesia.

Keterangan tabel provinsi ditunjukkan pada

tabel berikut:

Berikut ini adalah beberapa isi tabel

provinsi :

Tabel 4.1 Tabel Provinsi

Gambar 4.1 Tabel Provinsi

b. Tabel Kabupaten

Tabel kabupaten digunakan untuk

menyimpan data daftar kabupaten di

Indonesia. Keterangan tabel kabupaten

ditunjukkan pada tabel berikut:

Tabel Tipe Ukur

an

Keterangan

Id_pro

v

Integ

er

11 Kunci Primer,

Auto Increment

Nama_

prov

Varch

ar

255 Nama-nama

provinsi di

Indonesia

Page 7: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

Tabel 4.2 Tabel Kabupaten

Berikut ini adalah beberapa isi tabel

kabupaten :

Gambar 4.2 Tabel Kabupaten

c. Tabel Kelompok Umur (kel_umur)

Tabel kel_umur digunakan untuk

menyimpan range/kelompok umur pemilih.

Keterangan tabel kel_umur ditunjukkan pada

tabel berikut :

Tabel 4.2 Tabel Kabupaten

Berikut ini adalah isi tabel kel_umur :

Gambar 4.3 Tabel Kelompok Umur

d. Tabel Suara

Tabel suara digunakan untuk menyimpan

data jumlah pemilih di Indonesia. Keterangan

tabel suara ditunjukkan pada tabel berikut:

Tabel Tipe Ukur

an

Keterangan

Id_suara Integer 11 Kunci

Primer, Auto

Increment

Prov_id Integer 11 Foreign Key,

id provinsi

Kab_id Integer 11 Foreign Key,

id kabupaten

Tabel Tipe Ukur

an

Keterang

an

Id_kab Integer 11

Kunci

Primer,

Auto

Increment

Prov_i

d Integer 11

Foreign

Key, id

provinsi

Nama_

kab Varchar 255

Nama-

nama

kabupaten

di

Indonesia

Tabel Tipe Ukur

an

Keterangan

Id_kelo

mpok

Intege

r

11 Kunci Primer, Auto

Increment

Kelom

pok_u

mur

Varch

ar

20 Range

pengelompokan

umur pemilih

Page 8: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

Kel_id Integer 11 Foreign Key,

id kelompok

umur

Jumlah Integer 11 Jumlah

pemilih

Tabel 4.4 Tabel Suara

Berikut ini adalah beberapa isi tabel suara:

Gambar 4.4 Tabel Suara

4.4 Instalasi Pthread pada PHP

Sebelum mengaplikasikan multithreading

dan singlethreading pada bahasa

pemrograman PHP, diperlukan instalasi

pthread sebagai library yang mendukung

threading. Instalasi pthread pada PHP

dijabarkan pada poin-poin berikut ini.

1. Download library pthread dengan

versi yang disesuaikan dengan versi

XAMPP yang digunakan pada

komputer.

2. Copy file pthreadVC2.dll pada folder

xampp/php dan file php_pthreads.dll

pada folder xampp/php/ext.

3. Pada file php.ini yang berada pada

folder xampp/php aktifkan

extension=php_pthreads.dll jika

sudah ada. Jika belum, maka

tambahkan ekstensi tersebut untuk

mengaktifkan pthread pada XAMPP

yang digunakan.

4. Restart Apache pada XAMPP.

4.5 Perancangan Singlethreading dan

Multithreading

Sistem yang akan dikembangkan pada

penelitian ini adalah sistem yang

memanfaatkan dua jenis thread yaitu

singlethreading dan multithreading. Waktu

komputasi atau running time yang dibutuhkan

untuk sistem atau aplikasi yang

memanfaatkan multithreading dianggap lebih

cepat dibandingkan dengan yang

memanfaatkan singlethreading.

Pengujian ini akan lebih memperkuat

konsep tersebut dengan mengembangkan

sistem perhitungan data pemilih aktif di

Indonesia dengan mengaplikasikan

keduanya, agar dapat dilihat seberapa

berpengaruh multithreading pada lamanya

komputasi dibandingkan dengan

singlethreading.

Pengaplikasian singlethreading dilihatkan

pada gambar berikut ini.

<?php

error_reporting(0);

$server = "localhost";

$username = "root";

$password = "";

$database = "thread";

mysql_connect($server,$username,$pass

word) or die("Koneksi gagal");

mysql_select_db($database) or

die("Database tidak bisa dibuka");

Page 9: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

$start = microtime(true);

$kueri = mysql_query("select * from

provinsi");

while($data =

mysql_fetch_array($kueri)){

//perhitungan per provinsi

echo "Thread provinsi

".$data['nama_prov'];

echo "<br />";

$suara =

mysql_query("select *

from

suara,kabupaten,kel_umur,provinsi

where suara.prov_id =

provinsi.id_prov

AND suara.kab_id =

kabupaten.id_kab

AND suara.kel_id =

kel_umur.id_kel

AND

suara.prov_id='$data[id_prov]'

Order By id_suara");

//$jml = array();

$jml1 = 0;

$jml2 = 0;

$jml3 = 0;

$jml4 = 0;

while($jumlah=mysql_fetch_arr

ay($suara)){

if($jumlah['id_kel']==1){

$jml1

= $jml1+$jumlah['jumlah'];

}elseif($jumlah['id_kel']==2){

$jml2

= $jml2+$jumlah['jumlah'];

}elseif($jumlah['id_kel']==3){

$jml3

= $jml3+$jumlah['jumlah'];

}elseif($jumlah['id_kel']==4){

$jml4

= $jml4+$jumlah['jumlah'];

}

}

echo "Kelompok umur

17-26= ".$jml1;

echo "<br />";

echo "Kelompok umur

27-36= ".$jml2;

echo "<br />";

echo "Kelompok umur

37-46= ".$jml3;

echo "<br />";

echo "Kelompok umur

47-56= ".$jml4;

echo "<br />";

// $this->data = $jml;

/*echo $this->data;*///

$this->data = $jml;

echo "<br />";

echo "<hr />";

echo "<br />";

}

$data2 = mysql_query("select *

from

suara,kabupaten,kel_umur,provinsi

where suara.prov_id =

provinsi.id_prov

AND suara.kab_id =

kabupaten.id_kab

AND suara.kel_id =

kel_umur.id_kel

Order By id_suara");

$data4 = array();

while($data3=mysql_fetch_array($data2))

{ //perhitungan semuanya

array_push($data4,$data3);

}

$jmla1 = 0;

$jmla2 = 0;

$jmla3 = 0;

$jmla4 = 0;

foreach($data4 as $data){

if($data['id_kel']==1){

Page 10: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

$jmla1 =

$jmla1+$data['jumlah'];

}elseif($data['id_kel']==2){

$jmla2 =

$jmla2+$data['jumlah'];

}elseif($data['id_kel']==3){

$jmla3 =

$jmla3+$data['jumlah'];

}elseif($data['id_kel']==4){

$jmla4 =

$jmla4+$data['jumlah'];

}

}

echo "Total Keseluruhan";

echo "<br />";

echo "Kelompok umur 17-26=

".$jmla1;

echo "<br />";

echo "Kelompok umur 27-36=

".$jmla2;

echo "<br />";

echo "Kelompok umur 37-46=

".$jmla3;

echo "<br />";

echo "Kelompok umur 47-56=

".$jmla4;

echo "<br />";

// $this->data = $jml;

// echo $this->data;

echo "<br />";

echo "<hr />";

echo "<br />";

sleep(0);

$runtime = (microtime(true)-$start);

echo "Running Time : ".$runtime;

Gambar 4.5 Singlethreading PHP

Singlethreading akan menampilkan

jumlah data pemilih yang aktif di Indonesia di

berbagai provinsi. Selain itu sistem juga akan

menampilkan jumlah data pemilih

keseluruhan. Singlethreading akan

menjalankan satu proses dahulu hingga

selesai, kemudian dilanjutkan dengan proses

selanjutnya. Output running time akan

ditampilkan ketika semua proses sudah

selesai dieksekusi.

Selain singlethreading, sistem yang

dikembangkan ini akan memanfaatkan

multithreading yang menurut berbagai

penelitian konsep ini akan mempercepat

waktu eksekusinya. Berikut akan ditampilkan

pengaplikasian multithreading pada sistem

perhitungan data pemilih di Indonesia.

<?php

error_reporting(0);

class Pemilu extends Thread { //function

thread menghitung jumlah keseluruhan

public $data;

public $provinsi;

public function __construct($provinsi){

$this->provinsi = $provinsi;

}

public function run() {

$tes = $this->provinsi;

$jml1 = 0;

$jml2 = 0;

$jml3 = 0;

$jml4 = 0;

foreach($tes as $data){

if($data['id_kel']==1){

$jml1

= $jml1+$data['jumlah'];

}elseif($data['id_kel']==2){

$jml2

= $jml2+$data['jumlah'];

}elseif($data['id_kel']==3){

$jml3

= $jml3+$data['jumlah'];

}elseif($data['id_kel']==4){

$jml4

= $jml4+$data['jumlah'];

}

}

$this->data =

array($jml1,$jml2,$jml3,$jml4);

}

}

$server = "localhost";

$username = "root";

$password = "";

Page 11: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

$database = "thread";

// Koneksi dan memilih

database di server

mysql_connect($server,$userna

me,$password) or die("Koneksi gagal");

mysql_select_db($database) or

die("Database tidak bisa dibuka");

$kueri = mysql_query("select * from

provinsi");

$data2 = mysql_query("select *

from

suara,kabupaten,kel_umur,provinsi

where suara.prov_id =

provinsi.id_prov

AND suara.kab_id =

kabupaten.id_kab

AND suara.kel_id =

kel_umur.id_kel

Order By id_suara");

$data4 = array();

while($data3=mysql_fetch_array($data2))

{

array_push($data4,$data3);

}

$pemilu = new Pemilu($data4);

$start = microtime(true);

if($pemilu->start()){ //ketika funtion

pemilu dijalankan maka dibawah juga

dijlankan bersamaan

while($data =

mysql_fetch_array($kueri)){

echo "Thread provinsi

".$data['nama_prov'];

echo "<br />";

$suara =

mysql_query("select *

from

suara,kabupaten,kel_umur,provinsi

where suara.prov_id =

provinsi.id_prov

AND suara.kab_id =

kabupaten.id_kab

AND suara.kel_id =

kel_umur.id_kel

AND

suara.prov_id='$data[id_prov]'

Order By id_suara");

//$jml = array();

$jml1 = 0;

$jml2 = 0;

$jml3 = 0;

$jml4 = 0;

while($jumlah=mysql_fetch_arr

ay($suara)){

if($jumlah['id_kel']==1){

$jml1

= $jml1+$jumlah['jumlah'];

}elseif($jumlah['id_kel']==2){

$jml2

= $jml2+$jumlah['jumlah'];

}elseif($jumlah['id_kel']==3){

$jml3

= $jml3+$jumlah['jumlah'];

}elseif($jumlah['id_kel']==4){

$jml4

= $jml4+$jumlah['jumlah'];

}

}

echo "Kelompok umur

17-26= ".$jml1;

echo "<br />";

echo "Kelompok umur

27-36= ".$jml2;

echo "<br />";

echo "Kelompok umur

37-46= ".$jml3;

echo "<br />";

Page 12: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

echo "Kelompok umur

47-56= ".$jml4;

echo "<br />";

// $this->data = $jml;

// echo $this->data;

echo "<br />";

echo "<hr />";

echo "<br />";

// echo "<pre>";

// print_r($this->data);

// echo "</pre>";

}

$pemilu->join();//join kedua data

echo "Total Keseluruhan";

echo "<br />";

echo "Kelompok umur 17-26=

".$pemilu->data[0];

echo "<br />";

echo "Kelompok umur 27-36=

".$pemilu->data[1];

echo "<br />";

echo "Kelompok umur 37-46=

".$pemilu->data[2];

echo "<br />";

echo "Kelompok umur 47-56=

".$pemilu->data[3];

echo "<br />";

// $this->data = $jml;

// echo $this->data;

echo "<br />";

echo "<hr />";

echo "<br />";

}

$runtime = (microtime(true)-$start);

/* we can now manipulate the response

*/

echo "Running Time :

".$runtime;

Gambar 4.6 Multithreading PHP

Multithreading juga akan menampilkan

output berupa jumlah data pemilih yang

dikategorikan berdasarkan provinsi. Selain

itu sistem ini juga akan menampilkan jumlah

data pemilih keseluruhan. Berbeda dengan

singlethreading, multithreading akan

menampilkan running time atau waktu

eksekusinya ketika semua proses sudah

selesai dijalankan secara bersamaan.

V. PENGUJIAN SISTEM

5.1 Komponen Sistem

Spesifikasi rangkaian yang digunakan

sebagai server dalam percobaan ini adalah :

- Notebook dengan Processor Intel

Core i3-3217U 1.80 GHz, Memory

4 GB, dan Operating System

Windows 7 Ultimate 64-bit (Gita)

- Notebook dengan Processor Intel

Core i5-3337U 1.80 GHz, Memory

4 GB, dan Operating System

Windows 8 Single Language 64-bit

(Esti)

- Notebook dengan Processor Intel

Core 2 Duo T6400 2.00 GHz,

Memory 2 GB, dan Operating

System Windows 7 Ultimate 32-bit

(Nasir)

- Netbook dengan Processor AMD

C-60 1.00 GHz, Memory 2 GB, dan

Operating System Windows 7

Starter 32-bit (Rian)

- Notebook dengan Processor Intel

Core i3 M330 2.13 GHz, Memory 4

GB, dan Operating System

Windows 8.1 Pro 64-bit (Shelly)

- Notebook dengan Processor Intel

Core i3-2330M 2.20 GHz, Memory

6 GB, dan Operating System

Windows 8 Pro 64-bit (Septri)

5.1 Hasil Pengujian Singlethreading dan

Multithreading pada Spesifikasi Komputer

yang Berbeda

Selain bahasa pemrograman Java dan C,

ternyata PHP juga mendukung penuh konsep

thread baik singlethreading maupun

multithreading. Sistem perhitungan data

pemilih di Indonesia merupakan salah satu

sistem yang berhasil dikembangkan dengan

menerapkan keduanya.

Singlethreading akan melakukan

perhitungan data pemilih perprovinsi dan

keseluruhan. Konsep singlethreading adalah

mengeksekusi satu persatu proses, ketika

proses pertama selesai dieksekusi maka baru

akan dilanjutkan oleh proses selanjutnya.

Page 13: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

Begitu juga pada sistem ini, setelah

perhitungan data perprovinsi selesai

dilakukan, baru dilanjutkan dengan

menghitung data keseluruhan.

Hampir sama dengan singlethreading

bahwa sistem ini akan melakukan

perhitungan data pemilih perprovinsi dan

keseluruhan. Namun, konsep multithreading

berbeda dengan singlethreading dimana

semua proses akan dieksekusi bersamaan.

Multithreading pada sistem ini terdiri dari dua

thread yaitu perhitungan perprovinsi dan

perhitungan keseluruhan, yang kemudian

kedua thread tersebut dieksekusi bersamaan.

Algoritma perhitungan data pemilih

perprovinsi dan keseluruhan menggunakan

algoritma yang sama baik pada

singlethreading maupun multithreading.

Pengujian sistem perhitungan data

pemilih ini akan dilakukan pada dua konsep

yang berbeda dengan mengeksekusi kurang

lebih 1000 data, yakni :

1. Pengujian pertama, sistem diujikan

pada satu laptop untuk menganalisa

perbandingan kecepatan waktu

eksekusi atau running time

perhitungan data pemilih.

2. Pengujian kedua, sistem diujikan

pada enam laptop untuk menganalisa

perbandingan kecepatan waktu

eksekusi berdasarkan spesifikasi

komputer yang berbeda. Pengujian

ini bertujuan untuk mengetahui

adakah pengaruh lain yang mampu

mempercepat waktu eksekusi sebuah

sistem.

Pengujian pertama yaitu sistem ini

diujikan pada Laptop Septri dengan

spesifikasi yang telah disebutkan

sebelumnya. Hasil pengujian sistem

perhitungan data pemilih dengan

singlethreading dan multithreading

ditunjukkan pada tabel berikut ini.

Percobaan Execution Time(s)

1 Singlethread Multihread

2 0.034 0.029

3 0.069 0.034

4 0.038 0.026

5 0.041 0.030

6 0.071 0.032

7 0.040 0.034

8 0.054 0.029

9 0.069 0.033

10 0.035 0.026

Tabel 5.1 Pengujian Pertama

Waktu rata-rata singlethreading adalah

0.045 ms, sedangkan waktu rata-rata

multithreading adalah 0.027 ms. Perbedaan

waktu eksekusi pada setiap percobaan

tersebut disebut dengan Observational Error

dan termasuk dalam Random Error. Optional

error atau kesalahan pengukuran adalah

perbedaan antara nilai terukur dan nilai yang

sebenarnya. Sedangkan Random error adalah

kesalahan yang tidak bisa dikontrol dan

sering dianggap bukan sebagai kesalahan.

Kesalahan perhitungan ini terjadi karena

eksekusi didorong ke batas maksimalnya.

Pengujian kedua yaitu sistem ini diujikan

pada enam laptop yang memiliki spesifikasi

yang berbeda seperti yang telah dijabarkan

sebelumnya. Pengujian kedua hampir sama

dengan pengujian pertama, dimana setiap

laptop dilakukan eksekusi program selama 10

kali dan diambil waktu rata-rata eksekusinya.

Hasil pengujian sistem perhitungan data

pemilih dengan singlethreading dan

multithreading pada spesifikasi komputer

yang berbeda ditunjukkan pada tabel berikut

ini.

Laptop Processor RA

M

Execution Time(s)

Single

Thread

Multi

Thread

Page 14: ANALISIS PERBANDINGAN WAKTU PERHITUNGAN DATA PEMILIH AKTIF PEMILU ANTARA SINGLETHREADING DAN MULTITHREADING DI PHP PADA SPESIFIKASI KOMPUTER YANG BERBEDA

Septri

Intel Core

i3-2330M

2.20 GHz

6

GB 0.045 0.027

Shelly

Intel Core

i3 M330

2.13 GHz

4

GB 0.046 0.029

Gita

Intel Core

i3-3217U

1.80 GHz

4

GB 0.047 0.030

Esti

Intel Core

i5-3337U

1.80 GHz

4

GB 0.043 0.027

Rian

AMD C-

60 1.00

GHz

2

GB 0.082 0.055

Nasir

Intel Core

2 Duo

T6400

2.00 GHz

2

GB 0.075 0.048

Tabel 5.2 Pengujian Kedua

Pengujian di atas membuktikan bahwa

perbedaan spesifikasi komputer memberikan

pengaruh perbedaan waktu eksekusinya.

Yang paling berpengaruh adalah jenis

processornya, karena processorlah yang

melakukan proses semua data, sedangkan

RAM tidak terlalu berpengaruh karena hanya

menggunakan sedikit memori dalam

melakukan proses perhitungan data.

VI. KESIMPULAN

1. Konsep multithreading dan

singlethreading tidak hanya dapat

diaplikasikan pada bahasa

pemrograman Java dan C saja,

namun juga pada bahasa

pemrograman PHP dengan

menggunakan library Pthread.

2. Waktu eksekusi multithreading akan

lebih cepat dibandingkan dengan

singlethreading karena semua proses

dapat dijalankan secara bersamaan

atau paralel. Multithreading sangat

baik diaplikasikan pada sistem

perhitungan data pemilih aktif di

Indonesia, apalagi untuk jumlah

penduduk yang semakin hari semakin

meningkat.

3. Perbedaan spesifikasi komputer

dalam melakukan proses paralel

multithreading dan singlethreading

mempengaruhi waktu eksekusi,

terutama jenis processor yang

digunakan karena processorlah yang

melakukan proses semua data.

VII. DAFTAR PUSTAKA

[1] Krik B. David . , 2005. Multiple core,

multiple threads, Multiple pipes. IEEE,

2005 International Forum on Information

Technology and Applications.

[2] Rahman Musafiq , Childers R. Bruce,

Cho Sangyeun. , 2013. Continous Memory

Testing with Multithreading extension.

University of Pittsburgh, United States.

[3] Fasilitas input data e-counting

Documentation. Available at :

[http://sipemilu.org/ti-

kpu/category/artikel/page/42/]

[4] Greenhill David . Chip Multi

Threading Keeps the Data Center Cool.

Santa Clara, California : Sun Microsystem.

[5] Lin , Yuan. Multithread Programming

Challenges, current practice, and

languages/tools support. Santa Clara,

California : Sun Microsystem.