Page 1
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
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
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
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
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
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
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
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
$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
$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
$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
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
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
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.