87
IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN TEKNOLOGI WEB WORKERS PADA JAVASCRIPT SEBAGAI LIBRARY TRANSFORMASI DATA SKRIPSI Diajukan sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer (S.Kom.) Drevendy Harianto 14110110064 PROGRAM STUDI INFORMATIKA FAKULTAS TEKNIK DAN INFORMATIKA UNIVERSITAS MULTIMEDIA NUSANTARA TANGERANG 2018

IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

IMPLEMENTASI METODE FORKJOINPOOL

MENGGUNAKAN TEKNOLOGI WEB WORKERS PADA

JAVASCRIPT SEBAGAI LIBRARY TRANSFORMASI DATA

SKRIPSI

Diajukan sebagai salah satu syarat untuk memperoleh gelar Sarjana

Komputer (S.Kom.)

Drevendy Harianto

14110110064

PROGRAM STUDI INFORMATIKA

FAKULTAS TEKNIK DAN INFORMATIKA

UNIVERSITAS MULTIMEDIA NUSANTARA

TANGERANG

2018

Page 2: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

Scanned by CamScanner

Page 3: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …
Page 4: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …
Page 5: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

v

KATA PENGANTAR

Puji syukur kepada Tuhan Yang Maha Esa yang telah memberikan karunia-

Nya, sehingga laporan skripsi yang berjudul “Implementasi Metode ForkJoinPool

Menggunakan Teknologi Web Workers pada JavaScript sebagai Library

Transformasi Data” ini dapat diselesaikan tepat waktu.

Penulis juga mengucapkan terima kasih kepada:

1. Dr. Ninok Leksono, Rektor Universitas Multimedia Nusantara, yang memberi

inspirasi bagi penulis untuk berprestasi,

2. Hira Meidia, Ph.D., Dekan Fakultas Teknik dan Informatika Universitas

Multimedia Nusantara,

3. Seng Hansun, S.Si., M.Cs., Ketua Program Studi Informatika Universitas

Multimedia Nusantara, yang menerima penulis dengan baik untuk

berkonsultasi,

4. Seng Hansun, S.Si., M.Cs., selaku Dosen Pembimbing I, yang membimbing

pembuatan skripsi dan yang telah mengajar penulis tata cara menulis karya

ilmiah dengan benar,

5. Andre Rusli, S.Kom., M.Sc., selaku Dosen Pembimbing II, yang membimbing

pembuatan skripsi dan yang telah mengajar penulis tata cara menulis karya

ilmiah dengan benar,

6. Julio Christian Young, yang telah memberikan bantuan dan saran dalam

penyusunan laporan skripsi maupun pembuatan program.

Page 6: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

vi

Penulis juga mengucapkan terima kasih kepada keluarga yang telah tanpa

henti memberikan dukungan dalam penyelesaian laporan skripsi ini. Semoga

skripsi ini dapat bermanfaat, baik sebagai sumber informasi maupun sumber

inspirasi, bagi para pembaca.

Tangerang, 10 Agustus 2018

(Drevendy Harianto)

Page 7: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

vii

IMPLEMENTASI METODE FORKJOINPOOL

MENGGUNAKAN TEKNOLOGI WEB WORKERS PADA

JAVASCRIPT SEBAGAI LIBRARY TRANSFORMASI DATA

ABSTRAK

Transformasi data dalam jumlah besar memakan waktu pemrosesan yang

tidak sedikit sehingga dibutuhkan optimasi. Salah satu cara yang dapat digunakan

untuk melakukan optimasi adalah multithreading. Prosesor merupakan perangkat

keras yang berkembang pesat saat ini. Prosesor yang beredar di masyarakat rata-

rata merupakan prosesor multi-core yang dapat memproses secara paralel. Sebelum

munculnya Web Workers, JavaScript merupakan bahasa pemrograman yang buruk

dalam parallel programming. Munculnya Web Workers memungkinkan JavaScript

untuk melakukan parallel programming. Metode ForkJoinPool merupakan metode

yang mengimplementasikan algoritma Divide and Conquer sehingga dapat

digunakan dalam multithreading. Oleh karena itu, pada penelitian ini dibuat library

transformasi data dengan mengimplementasikan metode ForkJoinPool

menggunakan teknologi Web Workers pada JavaScript. Adapun bahasa

pemrograman yang digunakan adalah HTML dan JavaScript. Berdasarkan hasil uji

coba yang telah dilakukan, terbukti bahwa metode ForkJoinPool dapat

diimplementasikan menggunakan teknologi Web Workers pada JavaScript sebagai

library transformasi data. Selain itu, dapat disimpulkan bahwa penggunaan library

transformasi data yang dibuat mempengaruhi kecepatan transformasi data

tergantung pada waktu pemrosesan dari transformasi yang dilakukan. Semakin

besar waktu pemrosesan dari transformasi data yang dilakukan, maka efektivitas

dalam penggunaan library transformasi data akan meningkat.

Kata Kunci: ForkJoinPool, JavaScript, Library Transformasi Data, Multithreading,

Web Workers

Page 8: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

viii

IMPLEMENTATION OF FORKJOINPOOL METHOD USING

WEB WORKERS TECHNOLOGY IN JAVASCRIPT AS DATA

TRANSFORMATION LIBRARY

ABSTRACT

Transforming large amounts of data takes a lot of processing time, so that

the optimization is required. One way that can be used to perform optimization is

multithreading. Nowadays, processor is growing rapidly. The average processor in

community is multi-core processor that can process in parallel. Prior to the

emergence of Web Workers, JavaScript is a poorly programming language in

parallel programming. The emergence of Web Workers allows JavaScript to do

parallel programming well. The ForkJoinPool method is a method that implements

the Divide and Conquer algorithm so it is suitable for use in multithreading.

Therefore, this data transformation library was created by implementing the

ForkJoinPool method using Web Workers technology in JavaScript. This system is

written in JavaScript and HTML programming language. Based on results of testing

that have been done, it is proven that ForkJoinPool method can be implemented

using Web Workers technology in JavaScript as a data transformation library. In

addition, it can be concluded that data transformation library usage affects the speed

of data transformation depends on the data transformation complexity. The higher

the complexity of data transformation performed, the effectiveness in the use of

data transformation libraries will increase.

Keywords: ForkJoinPool, JavaScript, Data Transformation Library,

Multithreading, Web Workers

Page 9: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

ix

DAFTAR ISI

HALAMAN JUDUL .............................................. Error! Bookmark not defined.

HALAMAN PENGESAHAN ................................ Error! Bookmark not defined.

PERNYATAAN TIDAK MELAKUKAN PLAGIAT ........ Error! Bookmark not

defined. PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK

KEPENTINGAN AKADEMIS ............................. Error! Bookmark not defined.

KATA PENGANTAR ............................................................................................ v

ABSTRAK ............................................................................................................ vii

ABSTRACT ......................................................................................................... viii

DAFTAR ISI .......................................................................................................... ix

DAFTAR GAMBAR .............................................................................................. x

DAFTAR TABEL ................................................................................................. xii

BAB I PENDAHULUAN ....................................................................................... 1

1.1 Latar Belakang Masalah ........................................................................... 1

1.2 Rumusan Masalah .................................................................................... 4

1.3 Batasan Masalah ....................................................................................... 4

1.4 Tujuan Penelitian ...................................................................................... 5

1.5 Manfaat Penelitian .................................................................................... 5

1.6 Sistematika Penulisan ............................................................................... 5

BAB II LANDASAN TEORI ................................................................................. 7

2.1 Library ...................................................................................................... 7

2.2 Transformasi Data .................................................................................... 7

2.3 Multithreading .......................................................................................... 8

2.4 Teknologi Web Workers pada HTML5 ................................................... 9

2.5 Metode ForkJoinPool ............................................................................. 12

2.5.1 Penjelasan Fork ............................................................................... 13

2.5.2 Penjelasan Join ................................................................................ 14

2.5.3 Contoh Program ForkJoinPool ........................................................ 14

BAB III METODOLOGI DAN PERANCANGAN SISTEM .............................. 17

3.1 Metodologi Penelitian ............................................................................ 17

3.2 Perancangan Sistem ................................................................................ 19

3.2.1 Dokumentasi Library ...................................................................... 19

3.2.2 Flowchart ........................................................................................ 20

3.2.3 Desain Antarmuka ........................................................................... 28

BAB IV IMPLEMENTASI DAN UJI COBA ...................................................... 31

4.1 Spesifikasi Sistem ................................................................................... 31

4.2 Implementasi .......................................................................................... 31

4.3 Uji Coba ................................................................................................. 43

BAB V SIMPULAN DAN SARAN ..................................................................... 57

5.1 Simpulan ................................................................................................. 57

5.2 Saran ....................................................................................................... 58

DAFTAR PUSTAKA ........................................................................................... 59

LAMPIRAN .......................................................................................................... 20

Page 10: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

x

DAFTAR GAMBAR

Gambar 2.1 Cara Kerja Web Workers .................................................................. 10

Gambar 2.2 Main Thread Web Workers ............................................................... 10

Gambar 2.3 Worker.js ........................................................................................... 11

Gambar 2.4 Cara Kerja ForkJoinPool ................................................................... 12

Gambar 2.5 Contoh Cara Kerja Fork .................................................................... 13

Gambar 2.6 Contoh Cara Kerja Join ..................................................................... 14

Gambar 2.7 Code ForkJoinPool ............................................................................ 16

Gambar 3.1 Flowchart Utama ............................................................................... 21

Gambar 3.2 Flowchart Inisialisasi Nilai Awal Pada Variabel .............................. 22

Gambar 3.3 Flowchart Menjalankan Fungsi CreatePool ...................................... 23

Gambar 3.4 Flowchart Menjalankan Fungsi Execute ........................................... 24

Gambar 3.5 Flowchart Menjalankan Worker ....................................................... 26

Gambar 3.6 Flowchart WorkerDone ..................................................................... 27

Gambar 3.7 Rancangan Laman Website Pengujian Perhitungan Grade ............... 29

Gambar 3.8 Rancangan Laman Website Pengujian Enkripsi ............................... 30

Gambar 4.1 Implementasi Tampilan Website Penghitung Grade ......................... 32

Gambar 4.2 Implementasi Tampilan Website Penghitung Grade Setelah Data

Dihasilkan ............................................................................................................. 33

Gambar 4.3 Implementasi Tampilan Website Penghitung Grade Setelah

Perhitungan Grade (single thread) ........................................................................ 33

Gambar 4.4 Implementasi Tampilan Website Penghitung Grade Setelah

Perhitungan Grade (multithread)........................................................................... 34

Gambar 4.5 Implementasi Tampilan Website Kriptografi .................................... 34

Gambar 4.6 Implementasi Tampilan Website Kriptografi Setelah Data Dihasilkan

............................................................................................................................... 35

Gambar 4.7 Implementasi Tampilan Website Kriptografi Setelah Proses Enkripsi

Selesai (single thread) ........................................................................................... 36

Gambar 4.8 Implementasi Tampilan Website Kriptografi Setelah Proses Enkripsi

Selesai (multithread) ............................................................................................. 36

Gambar 4.9 Implementasi Kode Generate Data I ................................................. 37

Gambar 4.10 Implementasi Kode Generate Data II .............................................. 38

Gambar 4.11 Implementasi Kode StartWorker ..................................................... 39

Gambar 4.12 Variabel Fungsi dan OnFinished pada Website Penghitung Grade 39

Gambar 4.13 Variabel Fungsi dan OnFinished pada Website Kriptografi ........... 39

Gambar 4.14 Implementasi Kode CreatePool ....................................................... 40

Gambar 4.15 Potongan Kode worker.js ................................................................ 42

Gambar 4.16 Implementasi Kode Execute I ......................................................... 42

Gambar 4.17 Implementasi Kode Execute II ........................................................ 43

Gambar 4.18 Kode Enkripsi AES ......................................................................... 47

Gambar 4.19 Kode Hash Menggunakan SHA384 ................................................ 48

Gambar 4.20 Kode Hash Menggunakan Algoritma SHA512 ............................... 50

Gambar 4.21 Grafik Hubungan Jumlah Data dengan Rasio Kecepatan pada

Website Hitung Grade ........................................................................................... 52

Page 11: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

xi

Gambar 4.22 Grafik Hubungan Jumlah Data dengan Rasio Kecepatan pada

Website Kriptografi Algoritma AES, SHA384, dan SHA512 .............................. 53

Gambar 4.23 CPU Utilization Satu Thread........................................................... 55

Gambar 4.24 CPU Utilization Dua Thread ........................................................... 55

Gambar 4.25 CPU Utilization Empat Thread ....................................................... 56

Gambar 4.26 CPU Utilization Delepan Thread .................................................... 56

Page 12: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

xii

DAFTAR TABEL

Tabel 2.1 Batasan-batasan pada Web Workers ..................................................... 11

Tabel 2.2 Kompatibel Browser untuk Web Workers ............................................ 11

Tabel 2.3 Perbandingan Waktu Eksekusi antara Multithreading dengan

ForkJoinPool ......................................................................................................... 16

Tabel 3.1 Dokumentasi Library ............................................................................ 19

Tabel 3.2 Rencana Skenario Pengujian ................................................................. 30

Tabel 4.1 Hasil Uji Coba Website Hitung Grade .................................................. 45

Tabel 4.2 Waktu Kirim, Fork, dan Join Website Hitung Grade ........................... 46

Tabel 4.3 Hasil Uji Coba Enkripsi Menggunakan Algoritma AES ...................... 47

Tabel 4.4 Hasil Uji Coba Hash Menggunakan Algoritma SHA384 ..................... 49

Tabel 4.5 Hasil Uji Coba Hash Menggunakan Algoritma SHA512 ..................... 51

Tabel 4.6 Waktu Yang Dibutuhkan Untuk Setiap Uji Coba ................................. 53

Tabel 4.7 Optimal Point ........................................................................................ 54

Page 13: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

1

BAB I

PENDAHULUAN

1.1 Latar Belakang Masalah

Dalam dua dasawarsa terakhir, multithreading pada prosesor multi-core

telah digunakan untuk meningkatkan performa perangkat lunak (Kvatinsky dkk.,

2013). Ada beberapa masalah yang dialami perangkat lunak single-threaded,

seperti besar kemungkinan terjadinya user interface blocking, membutuhkan waktu

yang lama untuk melakukan transformasi data dalam jumlah besar, dan boros

energi. User interface blocking adalah keadaan saat pengguna tidak dapat

melakukan apapun (termasuk menekan button) saat website menjalankan script

tertentu (Refsnes dkk., 2017). Menurut Endres dan Kiebling (2015), saat ini

prosesor multi-core merupakan perangkat keras yang berkembang sangat pesat,

sehingga merupakan sebuah keharusan untuk mengembangkan perangkat lunak

multi-thread.

Menurut Wenzel dan Meinel (2015), jika dibandingkan dengan bahasa

pemrograman yang lain, JavaScript adalah bahasa pemrograman yang buruk dalam

hal parallel programming. Sekarang ini, pada sistem komputer yang modern rata-

rata telah menggunakan prosesor multi-core, bahkan pada mobile devices. Namun,

hal ini sangat bertentangan dengan JavaScript tradisional yang masih menggunakan

model eksekusi single-threaded. Oleh karena itu, HTML5 menyediakan

kemampuan multithreading melalui Web Workers yang dapat diimplementasikan

pada JavaScript (Gravelle, 2017). Selain itu, Web Workers juga telah terbukti dapat

mencegah user interface blocking (Refsnes dkk., 2017).

Page 14: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

2

Penelitian yang dilakukan oleh Okamoto dan Kohana (2011) telah berhasil

mengimplementasikan Web Workers pada sebuah permainan multiplayer berbasis

web. Web Workers digunakan untuk menghitung posisi dari avatar kemudian

memperbaharui posisi ke server. Pada awalnya, seluruh beban perhitungan posisi

avatar dilakukan oleh server. Namun, seiring bertambahnya pemain, beban server

juga ikut bertambah. Oleh karena itu, Web Workers digunakan untuk membagi

beban server ke klien. Jika menggunakan Web Workers, pembaharuan posisi

dilakukan setiap setengah detik, sedangkan tanpa menggunakan Web Workers

pembaharuan dilakukan setiap lima detik.

Menurut Alwi (2017), untuk melakukan transformasi data pada data yang

cukup besar masih memakan waktu cukup lama. Penelitian yang telah dilakukan

oleh Alwi (2017) telah berhasil memanfaatkan multithreading programming untuk

mempercepat waktu transformasi data pada Apache Mahout. Dalam penelitian ini,

telah diketahui bahwa adanya multithreading programming mampu meningkatkan

kinerja dalam melakukan transformasi data pada Apache Mahout. Dari pengujian

yang telah dilakukan menggunakan 20 juta data, didapatkan hasil pengujian pada

single-thread dengan lama waktu transformasi data selama 2.218 detik. Sedangkan

pada pengujian menggunakan 4 thread didapatkan hasil 764 detik.

Terdapat sebuah library transformasi data pada JavaScript yang dinamakan

MapReduce. MapReduce dapat digunakan untuk melakukan transformasi data

dengan cara memanggil function yang telah dibuat sebanyak jumlah data yang akan

ditransformasi (Scholz, 2017). Kelemahan dari MapReduce pada JavaScript adalah

bersifat single-thread (Zuidhof dan Til, 2011).

Page 15: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

3

Terdapat dua metode multithreading pada Java, yaitu ExecutorService dan

ForkJoinPool. ForkJoinPool merupakan sebuah metode dari Java yang

memungkinkan parallel programming dan bertanggung jawab mengatur semua

fork-join tasks pada seluruh program (Grossman, 2016). Menurut Gupta (2014),

kelebihan ForkJoinPool daripada ExecutorService adalah ForkJoinPool

mengimplementasi algoritma Divide and Conquer dan algoritma Work Stealing.

Menurut Wu dan Kung (1991), Divide and Conquer merupakan sebuah paradigma

dalam komputasi. Dengan menggunakan paradigma ini, solusi dari suatu masalah

didapatkan dengan cara memecahkan subproblems secara rekursif. Sementara itu,

Work Stealing adalah algoritma yang memungkinkan sebuah prosesor idle

membantu pekerjaan prosesor yang lainnya (Acar dkk., 2000). Oleh karena itu,

ForkJoinPool cocok digunakan untuk melakukan transformasi data dalam jumlah

banyak dengan memanfaatkan prosesor multi-core untuk menjalankan

multithreading (Grossman, 2016).

Penelitian yang telah dilakukan oleh Ponge (2011) telah berhasil

mengimplementasikan ForkJoinPool pada Java untuk menghitung jumlah kata yang

ada pada kumpulan dokumen-dokumen. Perhitungan jumlah kata menggunakan

dua core membutuhkan waktu 11,026 detik. Perhitungan jumlah kata menggunakan

empat core membutuhkan waktu 8,329 detik. Perhitungan jumlah kata

menggunakan delapan core membutuhkan waktu 4,208 detik, sedangkan

perhitungan jumlah kata menggunakan 12 core membutuhkan waktu 2,876 detik.

Jika perhitungan jumlah kata dilakukan dengan single-thread, maka membutuhkan

waktu kurang lebih 18 detik.

Page 16: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

4

Berdasarkan rangkaian masalah di atas, penelitian ini

mengimplementasikan metode ForkJoinPool menggunakan teknologi Web

Workers pada JavaScript sebagai library transformasi data dan mengetahui

pengaruh implementasi tersebut terhadap kecepatan transformasi data pada

JavaScript.

1.2 Rumusan Masalah

Berdasarkan latar belakang masalah yang dijelaskan sebelumnya, masalah

yang dirumuskan adalah sebagai berikut.

a. Bagaimana cara mengimplementasikan metode ForkJoinPool menggunakan

teknologi Web Workers pada JavaScript sebagai library transformasi data?

b. Apakah implementasi metode ForkJoinPool menggunakan teknologi Web

Workers pada JavaScript sebagai library transformasi data mempengaruhi

kecepatan transformasi data?

1.3 Batasan Masalah

Batasan masalah pada penelitian ini adalah sebagai berikut.

a. Data yang diperbolehkan hanyalah variabel primitif dan objek yang berisi

variabel primitif.

b. Library yang dibuat dalam penelitian ini hanya dapat digunakan oleh

komputer yang memiliki prosesor multi-core.

c. Pengujian hanya dilakukan sampai maksimal menggunakan delapan thread

dikarenakan keterbatasan perangkat keras yang dimiliki.

Page 17: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

5

1.4 Tujuan Penelitian

Berdasarkan rumusan masalah yang telah dipaparkan, tujuan dari

dilakukannya penelitian ini adalah sebagai berikut.

a. Mengimplementasikan metode ForkJoinPool menggunakan teknologi Web

Workers pada JavaScript sebagai library transformasi data.

b. Mengetahui bahwa implementasi metode ForkJoinPool menggunakan

teknologi Web Workers pada JavaScript sebagai library transformasi data

mempengaruhi kecepatan transformasi data dalam satuan waktu.

1.5 Manfaat Penelitian

Manfaat yang diharapkan dari pengimplementasian metode ForkJoinPool

menggunakan teknologi Web Workers pada JavaScript sebagai library transformasi

data adalah dapat membantu website programmer melakukan transformasi data

secara paralel dengan mengoptimalkan penggunaan prosesor multi-core untuk

mempercepat transformasi data.

1.6 Sistematika Penulisan

Untuk memahami lebih jelas isi dari laporan ini, maka materi-materi yang

tertera pada laporan skripsi ini dikelompokkan menjadi beberapa bab dengan

sistematika penyampaian sebagai berikut:

BAB I PENDAHULUAN

Bab ini berisikan latar belakang, perumusan masalah, batasan masalah, tujuan

penelitian, manfaat penelitian, dan sistematika penulisan.

Page 18: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

6

BAB II LANDASAN TEORI

Bab ini berisikan teori tentang Multithreading, Web Workers, library

transformasi data, dan metode ForkJoinPool yang berupa pengertian dan definisi

yang diambil dari kutipan paper, internet, dan buku yang berkaitan dengan

penyusunan laporan skripsi serta beberapa literatur yang berhubungan dengan

penelitian.

BAB III METODOLOGI DAN PERANCANGAN SISTEM

Bab ini berisikan metode penelitian yang digunakan dan perancangan sistem.

Perancangan sistem terdiri dari perancangan flowchart dan desain antarmuka.

BAB IV IMPLEMENTASI DAN UJI COBA

Bab ini berisi implementasi dan hasil dari uji coba library yang telah

dibangun.

BAB V SIMPULAN DAN SARAN

Bab ini terdiri atas simpulan dari hasil pengujian library dan saran untuk

pengembangan library di kemudian hari.

Page 19: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

7

BAB II

LANDASAN TEORI

2.1 Library

Menurut Beal (2017), pengertian library dalam konteks pemrograman

adalah sekumpulan kode atau function yang telah dikompilasi, sehingga dapat

digunakan oleh programmer dengan cara memanggil function yang telah

didefinisikan. Dengan menggunakan library, programmer tidak perlu menuliskan

kode yang sama secara berulang-ulang karena programmer dapat memanggil

function yang telah didefinisikan dalam sebuah library (Rouse, 2005).

2.2 Transformasi Data

Menurut Long (2014), transformasi data adalah proses mengubah setiap

elemen dari data, baik perubahan terhadap nilai ataupun terhadap struktur dari

elemen tersebut. Ada beberapa jenis transformasi data yang dimaksud dalam

penelitian ini, seperti operasi Matematika dasar dan pemrosesan data dengan tipe

data string.

Menurut Septeriyan (2018), ada empat macam operasi Matematika dasar,

yaitu penjumlahan, pengurangan, perkalian, dan pembagian. Penjumlahan adalah

operasi Matematika yang menjumlahkan suatu angka dengan angka lainnya.

Pengurangan merupakan operasi Matematika yang mengurangkan suatu angka

dengan angka lainnya. Perkalian merupakan operasi Matematika yang mengalikan

suatu angka dengan angka lainnya. Sedangkan pembagian merupakan operasi

Matematika yang membagi suatu angka dengan angka lainnya. Sedangkan menurut

Page 20: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …
Page 21: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

9

Menurut Barney (2018), berdasarkan besar ukuran dari setiap tugas yang

harus diselesaikan oleh satu thread, tingkat paralelisme dibagi menjadi dua, yaitu

Fine-grain parallelism dan Coarse-grain parallelism. Pada Fine-grain parallelism,

sebuah tugas yang besar akan dipecah menjadi beberapa tugas yang ukurannya

kecil. Sedangkan pada Coarse-grain parallelism, sebuah tugas yang besar akan

dipecah menjadi beberapa tugas yang ukurannya masih relatif besar. Kelebihan

Fine-grain parallelism dibandingkan dengan Coarse-grain parallelism adalah

memfasilitasi load balancing, dimana setiap thread akan mendapatkan porsi tugas

yang seimbang. Pada Fine-grain parallelism, untuk mengerjakan 100 tugas yang

ukurannya kecil membutuhkan 100 thread. Sedangkan pada Coarse-grain

parallelism, untuk mengerjakan 100 tugas membutuhkan kurang dari 100 thread.

Berdasarkan paparan teori di atas, pembuatan library akan menggunakan tingkat

paralelisme Coarse-grain parallelism.

2.4 Teknologi Web Workers pada HTML5

Menurut Pan dkk. (2016), Web Workers adalah sebuah fitur baru yang

diperkenalkan pada HTML5, yang mengizinkan JavaScript untuk membuat thread

yang terpisah dari main thread dan mengizinkan JavaScript dieksekusi di

background. Kelebihan dari Web Workers adalah foreground tasks dan user

experience tidak terpengaruh oleh eksekusi script pada background (Pan dkk,

2016). Menurut Watanabe dkk (2013), dengan menggunakan Web Workers, sebuah

website dapat memiliki worker threads yang berjalan pada background proses,

terpisah dari main thread yang memang khusus digunakan untuk user interface

(paralel).

Page 22: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

10

Gambar 2.1 Cara Kerja Web Workers (Watanabe dkk, 2013)

Berikut adalah gambar yang berisi source code pada main thread.

Gambar 2.2 Main Thread Web Workers (Watanabe dkk, 2013)

Di dalam main thread, langkah pertama yang harus dilakukan adalah

membuat sebuah objek worker dengan menggunakan constructor “Worker()” yang

membutuhkan parameter berupa file JavaScript yang nantinya akan dieksekusi

ketika worker dipanggil. Pada Gambar 2.2, file JavaScript yang digunakan adalah

“worker.js”. Kemudian onmessage event dapat digunakan untuk memberikan

perintah kepada program ketika pesan dari worker telah sampai ke main thread.

Page 23: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

11

Selain itu, fungsi postMessage() berfungsi untuk memberikan pesan dari main

thread kepada worker.

Berikut adalah gambar yang berisi source code pada worker.js.

Gambar 2.3 Worker.js (Watanabe dkk, 2013)

Di sisi worker, onmessage event digunakan untuk memberikan perintah

kepada worker ketika pesan dari main thread telah sampai di worker. Kemudian

pesan dari main thread akan diproses dan dikirim kembali dengan menggunakan

function postMessage().

Tabel 2.1 Batasan-batasan pada Web Workers (Watanabe dkk, 2013)

Function name Enabled or Disabled

Navigator object Enabled

Location object Enabled (read only)

XMLHttpRequest Enabled

setTimeout() Enabled

setInterval() Enabled

Window object Disabled

Document object Disabled

Parent object Disabled

DOM Disabled

Pada Tabel 2.1, terdapat informasi mengenai batasan-batasan pada Web

Workers.

Tabel 2.2 Kompatibel Browser untuk Web Workers (Refsnes dkk., 2017)

Page 24: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

12

Pada Tabel 2.2, terdapat informasi mengenai versi dari browser yang dapat

menggunakan teknologi Web Workers.

2.5 Metode ForkJoinPool

Menurut Fidler dan Jiang (2016), ForkJoinPool adalah sebuah metode yang

memungkinkan pemrosesan data secara parallel, dimana pekerjaan pemrosesan

dibagi menjadi k tugas dimana setiap tugas akan diproses secara paralel oleh k core

prosesor (Fork). Setelah semua tugas selesai diproses, hasil dari setiap tugas akan

dikombinasikan (Join) menjadi satu. Menurut Maia dkk. (2015), jumlah maksimal

dari percabangan tugas adalah sebanyak jumlah core pada prosesor.

Menurut Stewart dan Singer (2016), salah satu keunggulan dari

ForkJoinPool adalah mengimplementasikan algoritma Work Stealing. Ketika

sebuah worker thread telah selesai mengeksekusi sebuah tugas dan sudah tidak ada

tugas yang dapat dikerjakan oleh worker thread tersebut, maka worker thread

tersebut dapat membantu menyelesaikan tugas yang ada pada thread lain.

Gambar 2.4 Cara Kerja ForkJoinPool (Gupta, 2014)

Page 25: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

13

2.5.1 Penjelasan Fork

Menurut Jenkov (2015), sebuah proses yang menggunakan prinsip dari fork

dapat membelah dirinya sendiri menjadi proses yang lebih kecil yang kemudian

dapat dijalankan secara bersamaan (concurrently). Berikut adalah contoh gambar

yang menggambarkan bagaimana metode fork bekerja.

Gambar 2.5 Contoh Cara Kerja Fork (Jenkov, 2015)

Dengan membagi setiap tugas menjadi tugas yang lebih kecil, setiap tugas

yang lebih kecil tersebut dapat dieksekusi secara paralel dengan menggunakan

prosesor yang berbeda, atau bahkan thread yang berbeda pada prosesor yang sama

(Jenkov, 2015). Menurut Jenkov (2015), sebuah tugas hanya akan membagi dirinya

menjadi tugas yang lebih kecil jika tugas tersebut merupakan tugas yang cukup

besar. Karena jika tugas yang akan dipecah adalah tugas yang kecil, ada

kemungkinan waktu yang dibutuhkan untuk proses eksekusi secara paralel akan

lebih besar dibandingkan eksekusi secara sekuensial.

Page 26: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

14

2.5.2 Penjelasan Join

Menurut Jenkov (2015), ketika sebuah tugas membelah dirinya sendiri

menjadi beberapa tugas kecil, tugas-tugas tersebut akan saling menunggu hingga

semua tugas selesai dieksekusi. Kemudian tugas utama akan menggabungkan

semua hasil menjadi satu. Untuk lebih jelasnya, disertakan gambar sebagai berikut.

Gambar 2.6 Contoh Cara Kerja Join (Jenkov, 2015)

2.5.3 Contoh Program ForkJoinPool

Pada Gambar 2.7, terdapat contoh program ForkJoinPool yang digunakan

untuk menjumlahkan angka dan penjelasannya sebagai berikut. Objek Sum

menerima tiga buah parameter, yaitu array yang akan dijumlahkan, indeks pertama

dari array, dan indeks terakhir dari array. Kemudian method compute

menjumlahkan seluruh array. Jika range array tersebut kurang dari variabel

Sequential_Threshold, penjumlahan akan dilakukan dengan menggunakan

perulangan. Sedangkan jika range array lebih besar dari Sequential_Threshold,

maka program akan membentuk dua objek Sum dengan ukuran array dibagi dua,

yaitu objek Sum bagian kiri dan objek Sum bagian kanan. Kemudian program akan

Page 27: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

15

menggunakan fungsi fork untuk menghitung objek Sum bagian kiri secara paralel

dengan memanggil fungsi “left.fork()” serta dalam waktu yang bersamaan program

juga akan menghitung objek Sum bagian kanan yang akan dilakukan oleh objek itu

sendiri dengan memanggil fungsi “right.compute()” (multithreading). Sedangkan

untuk mendapatkan hasil perhitungan dari objek Sum bagian kiri, program akan

memanggil fungsi left.join(). Ini adalah contoh sederhana multithreading yang

dapat dilakukan dengan metode ForkJoinPool.

Berdasarkan penelitian yang sudah pernah dilakukan oleh Francis dan

Mathew (2016), terbukti bahwa waktu eksekusi yang dibutuhkan oleh dua

algoritma multithreading yaitu PGKM (Parallel Genetic K Means) dan MPKM

(Modified Parallel K Means) melebihi waktu yang dibutuhkan ForkJoinPool.

Menurut Francis dan Mathew (2016), hal ini terjadi karena ketidakseimbangan

tugas yang diberikan kepada setiap thread yang ada. Pada ForkJoinPool, teknik

Work Stealing berfungsi untuk mengurangi dampak dari ketidakseimbangan

tersebut (Francis dan Mathew, 2016).

Page 28: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

16

Gambar 2.7 Code ForkJoinPool (Grossman, 2016)

Tabel 2.3 Perbandingan Waktu Eksekusi antara Multithreading dengan

ForkJoinPool (Francis dan Mathew, 2016)

Cores Exec.Sec- PGKM Exec.Sec-MPKM

Multithreading J/F Multithreading J/F

2 29.52 26.82 31.97 28.74

3 14.62 12.34 16.34 14.10

8 7.21 5.15 8.76 6.23

16 3.78 2.41 5.92 3.45

Page 29: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

17

BAB III

METODOLOGI DAN PERANCANGAN SISTEM

3.1 Metodologi Penelitian

Metodologi Penelitian yang digunakan dalam pengimplementasian metode

ForkJoinPool dengan menggunakan teknologi Web Workers pada JavaScript

disebutkan secara berurutan sebagai berikut.

a. Studi Literatur

Dalam studi literatur, pembelajaran terhadap berbagai teori-teori yang

berhubungan dengan pengimplementasian metode ForkJoinPool dengan

menggunakan teknologi Web Workers pada JavaScript dilakukan. Teori-teori

tersebut antara lain adalah ForkJoinPool Class, Fork/Join Framework, Threading

pada JavaScript, Web Workers, dan multithreading.

b. Perancangan Library

Tahap perancangan akan dimulai dari menentukan requirements, baik

requirement sistem ataupun requirement perangkat keras yang dibutuhkan untuk

dapat mengimplementasikan library yang dibuat. Selain menentukan requirements,

akan dibuat pula flowchart yang menggambarkan aliran proses pada library yang

dibuat.

c. Implementasi Metode

Proses implementasi metode akan dilakukan dengan cara

mengimplementasikan metode ForkJoinPool dengan menggunakan teknologi Web

Workers pada JavaScript, sehingga metode ForkJoinPool dapat digunakan pada

website platform.

Page 30: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

18

d. Pengujian Hasil Implementasi

Pengujian hasil implementasi akan dilakukan setelah proses

implementasi metode selesai. Skenario uji coba library yang dilakukan adalah

melakukan transformasi data menggunakan library yang telah dibuat dimana

library diimplementasikan pada kedua website yang telah dibuat, yaitu website

hitung grade dan website kriptografi menggunakan satu, dua, empat, dan delapan

thread. Uji coba terhadap website hitung grade dilakukan menggunakan Rumus

4.1. Uji coba terhadap website kriptografi dilakukan menggunakan library CryptoJs

dengan tiga metode enkripsi yaitu Advanced Encryption Standard (AES), Secure

Hash Algorithms 384 (SHA384), dan SHA512. Uji coba dilakukan untuk

mengetahui apakah implementasi metode ForkJoinPool menggunakan teknologi

Web Workers pada JavaScript sebagai library transformasi data mempengaruhi

kecepatan transformasi data.

Proses transformasi data dilakukan terhadap N data dan Y thread. Data

yang digunakan dalam uji coba merupakan data yang bersifat acak. Jumlah

threshold ditentukan berdasarkan hasil dari N dibagi dengan Y. Uji coba dilakukan

sebanyak tiga kali untuk setiap kelompok N data dan Y thread. Sebagai ilustrasi,

uji coba enkripsi kata sandi dilakukan sebanyak tiga kali untuk 1.000 data dan satu

thread. Kemudian hasil yang didapat dari uji coba sebanyak tiga kali dirata-ratakan.

Setelah itu uji coba dilakukan untuk 1.000 data dan dua thread sebanyak tiga kali.

Hasil uji coba antara menggunakan satu thread dan dua thread dibandingkan.

Apabila hasil yang didapat menunjukkan perbedaan yang tidak signifikan, maka

jumlah data diganti menjadi 10.000 data. Oleh karena itu, jumlah data yang

digunakan bersifat adaptif tergantung pada hasil dari pengujian sebelumnya.

Page 31: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

19

Paralelisme yang dilakukan adalah Coarse-grain parallelism terhadap jumlah data

yang diproses.

e. Evaluasi

Evaluasi akan dilakukan dengan menganalisis hasil pengujian implementasi

yang telah dilakukan pada tahap sebelumnya.

f. Dokumentasi

Ada beberapa jenis dokumentasi yang akan dibuat, yaitu dokumentasi

penelitian dalam bentuk laporan, dokumentasi dari library yang dibuat, serta akan

dilakukan publikasi.

3.2 Perancangan Sistem

Dokumentasi library dibuat untuk menjelaskan mengenai fungsi-fungsi

yang terdapat pada library ini. Sistem dirancang dengan menggunakan flowchart

dan desain antarmuka.

3.2.1 Dokumentasi Library

Tabel 3.1 Dokumentasi Library

Fungsi Parameter Deskripsi

Constructor

ForkJoinPool

thread_count, data,

action,

OnWorkerFinished,

OnExecuteFinished

Langkah pertama untuk menggunakan

library ini adalah memanggil

constructor library. Constructor akan

menerima 5 buah parameter yang akan

digunakan oleh library.

CreatePool - Digunakan untuk memecah data

menjadi data yang lebih kecil.

Execute - Digunakan untuk melakukan

transformasi data pada data yang telah

dipecah.

GetResult - Digunakan untuk mengambil data

yang telah ditransformasikan.

Page 32: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

20

Tabel 3.1 menjelaskan mengenai fungsi-fungsi yang terdapat pada library

ini. Variabel thread_count merupakan variabel yang berisi jumlah thread yang

digunakan. Variabel data merupakan variabel yang berisi data yang akan

ditransformasikan. Variabel action merupakan variabel yang berisi fungsi yang

akan dijalankan untuk melakukan transformasi data. Variabel OnWorkerFinished

merupakan variabel yang berisi fungsi yang akan dijalankan ketika sebuah worker

selesai melakukan transformasi data. Sedangkan variabel OnExecuteFinished

merupakan variabel yang berisi fungsi yang akan dijalankan ketika semua data telah

ditransformasikan.

3.2.2 Flowchart

Berikut merupakan flowchart dari library transformasi data yang dibuat

dengan mengimplementasikan metode ForkJoinPool menggunakan teknologi Web

Workers pada JavaScript.

A. Flowchart Utama

Gambar 3.1 adalah Flowchart Utama dari library yang akan dibuat. Tahap

pertama yang harus dilakukan oleh pengguna adalah melakukan input variabel

thread_count, data, action, OnWorkerFinished, dan OnExecuteFinished.

Selanjutnya akan dilakukan deklarasi objek ForkJoinPool. Proses deklarasi objek

ForkJoinPool dilakukan dengan memanggil constructor yang menerima beberapa

parameter, yaitu thread_count, data, action, OnWorkerFinished, dan

OnExecuteFinished. Setelah itu, proses inisialisasi nilai awal pada variabel akan

dilakukan. Langkah selanjutnya adalah menjalankan fungsi CreatePool. Fungsi

CreatePool berfungsi untuk memecah-mecah data yang jumlahnya banyak. Setelah

data dipecah-pecah, pengguna menjalankan fungsi Execute. Fungsi Execute

Page 33: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

21

berfungsi untuk melakukan transformasi data terhadap data yang telah dipecah tadi.

Langkah terakhir adalah menjalankan fungsi GetResult untuk mendapatkan data

yang telah ditransformasikan.

Gambar 3.1 Flowchart Utama

Page 34: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

22

B. Flowchart Inisialisasi Nilai Awal pada Variabel

Gambar 3.2 Flowchart Inisialisasi Nilai Awal pada Variabel

Page 35: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

23

Gambar 3.2 adalah Flowchart Inisialisasi Nilai Awal pada Variabel.

Langkah pertama adalah melakukan deklarasi dan inisialisasi terhadap variabel

threshold, pool, result, dan poolSize. Variabel threshold tidak perlu didefinisikan

oleh pengguna karena telah didefinisikan dari awal. Selanjutnya dilakukan

deklarasi dan inisialisasi terhadap variabel thread_count, data, dan action.

Kemudian akan dilakukan deklarasi dan inisialisasi terhadap variabel

action_execute_finished.

C. Flowchart Menjalankan Fungsi CreatePool

Gambar 3.3 Flowchart Menjalankan Fungsi CreatePool

Page 36: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

24

Gambar 3.3 adalah Flowchart Menjalankan Fungsi CreatePool. Secara

singkat, fungsi CreatePool adalah fungsi rekursif untuk memecah data yang

jumlahnya melebihi threshold, sehingga semua data memiliki jumlah yang lebih

kecil dari threshold. Fungsi CreatePool menerima satu parameter yang akan

diterima sebagai variabel param. Langkah pertama adalah memeriksa apakah

jumlah data lebih besar dari variabel threshold. Jika ya, data akan dibagi menjadi

dua. Hasilnya akan tercipta dua bagian yang kemudian akan dijadikan sebagai

parameter untuk menjalankan fungsi CreatePool. Jika tidak, data akan dimasukkan

ke variabel pool untuk ditransformasikan.

D. Flowchart Menjalankan Fungsi Execute

Gambar 3.4 Flowchart Menjalankan Fungsi Execute

Page 37: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

25

Gambar 3.4 adalah Flowchart Menjalankan Fungsi Execute. Tujuan dari

dijalankannya fungsi Execute adalah untuk melakukan transformasi data dengan

menggunakan Web Workers. Langkah pertama adalah melakukan deklarasi dan

inisialisasi terhadap variabel poolSize, pool_processing, thread_used, dan result.

Variabel poolSize merupakan jumlah array yang harus ditransformasikan pada

sebuah pool. Variabel pool_processing merupakan jumlah pool yang telah

ditransformasikan. Variabel thread_used merupakan jumlah thread yang sedang

digunakan untuk melakukan transformasi data. Variabel result merupakan sebuah

array yang digunakan untuk menyimpan data yang telah ditransformasikan.

Selanjutnya jika pool_processing lebih kecil dari poolSize dan thread_used lebih

kecil dari thread_count, maka sebuah Web Worker akan dibuat. Selanjutnya Main

Thread akan mengirimkan data yaitu pool_processing, pool[pool_processing], dan

action ke Web Worker. Kemudian Web Worker akan dijalankan menggunakan

thread yang terpisah dari Main Thread. Jika worker telah selesai mengerjakan

tugas, WorkerDone akan dijalankan. Setelah itu, akan dilakukan proses increment

terhadap variabel thread_used dan pool_processing.

E. Flowchart Menjalankan Worker

Gambar 3.5 adalah Flowchart Menjalankan Worker. Langkah pertama yang

dilakukan adalah menerima data dari Main Thread. Setelah itu, proses inisialisasi

terhadap variabel transformed_data, data, dan data_ctr dilakukan. Jika data_ctr

lebih kecil daripada jumlah data, maka proses transformasi data akan dilakukan

terhadap variabel data dengan index ke data_ctr. Hasil yang didapatkan dari proses

transformasi akan dimasukkan ke variabel transformed_data. Setelah itu, variabel

Page 38: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

26

data_ctr ditambah satu. Namun jika variabel data_ctr sama dengan panjang data,

maka variabel transformed_data akan dikembalikan ke Main Thread.

Gambar 3.5 Flowchart Menjalankan Worker

Page 39: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

27

F. Flowchart WorkerDone

Gambar 3.6 Flowchart WorkerDone

Gambar 3.6 adalah Flowchart WorkerDone. Fungsi WorkerDone akan

dipanggil setiap Web Worker menyelesaikan tugasnya masing-masing. Langkah

pertama adalah menerima nilai dari variabel transformed_data dari Web Worker

untuk dimasukkan ke variabel result. Selanjutnya nilai dari variabel thread_used

akan dikurangi satu. Jika nilai pool_processing lebih kecil dari nilai poolSize, maka

Page 40: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

28

sebuah Web Worker akan dibuat. Selanjutnya Main Thread akan mengirimkan data

yaitu pool_processing, pool[pool_processing], dan action ke Web Worker.

Kemudian Web Worker akan dijalankan menggunakan thread yang terpisah dari

Main Thread. Jika Worker telah selesai mengerjakan tugas, WorkerDone akan

dijalankan. Setelah itu, akan dilakukan proses increment terhadap variabel

thread_used dan pool_processing.

3.2.3 Desain Antarmuka

Untuk menguji library yang telah dibuat, dibangun dua buah website

pengujian. Website pengujian yang pertama akan digunakan untuk menghitung

grade mahasiswa berdasarkan data nilai yang sudah diberikan oleh dosen. Terdapat

sebuah tabel yang memiliki enam kolom, yaitu Nama, Nim, Nilai UTS, Nilai Tugas,

nilai UAS, dan grade. Pada awalnya isi dari kolom grade masih kosong. Jika

pengguna menekan tombol Hitung grade, proses perhitungan grade akan berjalan

dengan menggunakan library yang telah dibuat. Setelah proses perhitungan grade

selesai, akan ada output berupa berapa lama waktu yang dibutuhkan. Website

pengujian yang kedua akan digunakan untuk melakukan proses enkripsi atau hash

terhadap password tertentu. Ada beberapa teknik enkripsi dan hash yang dapat

digunakan, yaitu AES, MD5, ripemd160, Sha1, Sha224, Sha256, Sha3, Sha384,

dan Sha512. Terdapat sebuah tabel yang memiliki tiga kolom, yaitu Nama,

Password, dan Password_Enkripsi. Pada awalnya isi dari kolom Password_Enkripsi

masih kosong. Jika pengguna menekan tombol Enkripsi, proses enkripsi akan

berjalan dengan menggunakan library yang telah dibuat. Setelah proses enkripsi

selesai, akan ada output berupa berapa lama waktu yang dibutuhkan untuk

melakukan enkripsi tersebut. Kemudian hasil yang didapat dari pengujian

Page 41: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

29

menggunakan kedua website yang mengimplementasikan library ini akan

dibandingkan dengan hasil yang didapat dari pengujian menggunakan website yang

berjalan secara sekuensial. Sebelum membuat website pengujian, dilakukan desain

antarmuka terlebih dahulu. Gambar 3.7 merupakan Rancangan Laman Website

Pengujian Perhitungan Grade. Sedangkan Gambar 3.8 merupakan Rancangan

Laman Website Pengujian Enkripsi Password. Contoh kasus lain yang dapat

menggunakan library ini adalah pada saat biro administrasi urusan keuangan

(BAUK) ingin melihat uang pembayaran perkuliahan 100.000 mahasiswa di

kampus X, tentu diperlukan perhitungan terlebih dahulu. Perhitungan tersebut dapat

dilakukan dengan mengimplementasikan library transformasi data ini, sehingga

proses perhitungan menjadi lebih cepat.

Gambar 3.7 Rancangan Laman Website Pengujian Perhitungan Grade

Page 42: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

30

Gambar 3.8 Rancangan Laman Website Pengujian Enkripsi

Page 43: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

31

BAB IV

IMPLEMENTASI DAN UJI COBA

4.1 Spesifikasi Sistem

Sistem ini dibuat dengan menggunakan bahasa pemrograman HTML dan

Javascript. Spesifikasi sistem yang digunakan dalam proses pembangunan sistem

ini adalah sebagai berikut.

1. Perangkat lunak

a. XAMPP v.3.2.2

b. Google Chrome v66.0.3359.181 (32-bit)

c. Operating System Windows 10 (64 bit)

d. IDE Sublime Text versi 2

2. Perangkat keras

a. Prosesor AMD A10-5750M APU 2.50 GHz

b. RAM 4GB

c. HDD 500GB

d. AMD Graphic Card Radeon HD 8650G

3. Library

a. CryptoJs

4.2 Implementasi

Pada bagian Implementasi, ditampilkan laman antarmuka untuk website

Penghitung Grade, website kriptografi, serta potongan kode hasil implementasi

metode ForkJoinPool menggunakan teknologi Web Workers.

Page 44: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

32

4.2.1 Tampilan Website Penghitung Grade

Gambar 4.1 merupakan implementasi tampilan website penghitung

grade. Pada laman ini, terdapat jumlah data, jumlah thread, dan jumlah threshold

yang harus diisi. Jika tombol Hasilkan Data ditekan, maka data mahasiswa yang

bersifat acak dibuat sebanyak jumlah data yang telah diisi. Data yang dihasilkan

merupakan variabel dengan tipe data object dengan atribut nama, nim, nilai_uts,

nilai_tugas, nilai_uas, dan grade.

Gambar 4.1 Implementasi Tampilan Website Penghitung Grade

Gambar 4.2 merupakan implementasi tampilan website penghitung grade

setelah data dihasilkan. Pada tahap ini, tabel yang berisi data mahasiswa

ditampilkan. Pada tabel, informasi mengenai grade masih berupa kalimat “belum

dihitung”. Jika tombol Hitung ditekan, maka proses perhitungan grade berjalan.

Jika jumlah thread yang diisi sama dengan satu, maka proses perhitungan grade

berjalan secara sekuensial. Jika jumlah thread yang diisi lebih dari satu, maka

proses perhitungan grade berjalan menggunakan Library Transformasi Data yang

dibuat (multithreading).

Page 45: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

33

Gambar 4.2 Implementasi Tampilan Website Penghitung Grade Setelah Data

Dihasilkan

Gambar 4.3 dan Gambar 4.4 merupakan tampilan website penghitung

grade setelah proses perhitungan selesai. Pada tahap ini, isi dari kolom grade pada

tabel berubah menjadi grade yang didapat dari proses perhitungan. Selain itu, waktu

yang diperlukan untuk melakukan proses perhitungan juga ditampilkan.

Gambar 4.3 Implementasi Tampilan Website Penghitung Grade Setelah

Perhitungan Grade (single thread)

Page 46: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

34

Gambar 4.4 Implementasi Tampilan Website Penghitung Grade Setelah

Perhitungan Grade (multithread)

4.2.2 Tampilan Website Kriptografi

Gambar 4.5 merupakan implementasi tampilan website kriptografi. Pada

laman ini, terdapat metode enkripsi, jumlah data, jumlah thread, dan jumlah

threshold yang harus diisi. Jika tombol Hasilkan Data ditekan, maka data yang

bersifat acak dihasilkan. Data yang dihasilkan merupakan variabel dengan tipe data

object dengan atribut username, password, dan password_enkripsi.

Gambar 4.5 Implementasi Tampilan Website Kriptografi

Page 47: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

35

Gambar 4.6 merupakan implementasi tampilan website kriptografi

setelah data dihasilkan. Pada tahap ini, tabel yang berisi data ditampilkan. Pada

tabel, informasi mengenai password_enkripsi masih berupa tanda “-”. Jika tombol

Hitung ditekan, maka proses enkripsi berjalan. Jika jumlah thread yang diisi sama

dengan satu, maka proses enkripsi berjalan secara sekuensial. Jika jumlah thread

yang diisi lebih dari satu, maka proses enkripsi berjalan menggunakan Library

Transformasi Data yang dibuat (multithreading).

Gambar 4.6 Implementasi Tampilan Website Kriptografi Setelah Data Dihasilkan

Gambar 4.7 dan Gambar 4.8 merupakan tampilan website kriptografi

setelah proses enkripsi selesai. Pada tahap ini, isi dari kolom password_enkripsi

pada tabel berubah menjadi hasil enkripsi dari password. Selain itu, informasi

mengenai waktu yang diperlukan untuk melakukan proses enkripsi juga

ditampilkan.

Page 48: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

36

Gambar 4.7 Implementasi Tampilan Website Kriptografi Setelah Proses Enkripsi

Selesai (single thread)

Gambar 4.8 Implementasi Tampilan Website Kriptografi Setelah Proses Enkripsi

Selesai (multithread)

Page 49: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

37

4.2.3 Implementasi Metode

Terdapat lima bagian kode program dalam melakukan perhitungan grade

maupun melakukan proses enkripsi. Lima tahapan tersebut dijabarkan dalam

potongan kode sebagai berikut.

A. Potongan Kode Generate Data Awal

Gambar 4.9 dan Gambar 4.10 merupakan potongan kode generate data

awal untuk website penghitung grade. Pada fungsi ini, dibuat data yang bersifat

acak dengan jumlah sesuai dengan jumlah data yang dimasukkan user. Untuk

website penghitung grade, setiap data yang dihasilkan memiliki atribut nama, nim,

nilai_uts, nilai_tugas, nilai_uas, grade, dan index. Sedangkan website kriptografi,

setiap data yang dihasilkan memiliki atribut username, password, dan pw_enkripsi.

Setiap data yang dihasilkan merupakan objek dan ditampung di dalam sebuah

array.

Gambar 4.9 Implementasi Kode Generate Data I

Page 50: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

38

Gambar 4.10 Implementasi Kode Generate Data II

B. Potongan Kode StartWorker

Gambar 4.11 merupakan potongan kode StartWorker. Pada fungsi ini,

inisialisi library dilakukan dengan cara memanggil constructor ForkJoinPool yang

menerima parameter berupa variabel jumlah_thread, data, fungsi, onFinished, t0,

dan threshold. Variabel jumlah_thread, data, dan threshold didapat dari fungsi

generateData pada Gambar 4.9 dan Gambar 4.10. variabel t0 digunakan untuk

menghitung waktu yang dibutuhkan (keperluan uji coba). Skenario pengujian

dilakukan dengan menggunakan dua buah website. Gambar 4.12 menggambarkan

isi dari variabel fungsi dan onFinished pada website penghitung grade. Sedangkan

Gambar 4.13 menggambarkan isi dari variabel fungsi dan onFinished pada website

kriptografi. Variabel fungsi merupakan proses transformasi data yang akan

Page 51: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

39

dilakukan. Sedangkan variabel onFinished adalah proses yang dijalankan setelah

seluruh data selesai ditransformasikan.

Setelah itu, fungsi CreatePool dan Execute dijalankan. Penjelasan

mengenai dua fungsi ini ada pada sub bab selanjutnya.

Gambar 4.11 Implementasi Kode StartWorker

Gambar 4.12 Variabel Fungsi dan OnFinished pada Website Penghitung Grade

Gambar 4.13 Variabel Fungsi dan OnFinished pada Website Kriptografi

C. Potongan Kode Create Pool

Gambar 4.14 merupakan potongan kode create pool. Pada fungsi ini, data

yang telah dihasilkan dari proses generate data dibagi menjadi beberapa pool. Pool

merupakan data yang telah dipecah menjadi bagian yang lebih kecil untuk

kemudian diproses secara pararel. Aturan yang terdapat pada fungsi ini adalah jika

Page 52: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

40

jumlah data pada pool masih lebih besar daripada threshold, maka pool dibagi

menjadi dua. Sedangkan jika jumlah data pada pool lebih kecil daripada threshold,

pool ditampung di dalam sebuah array. Fungsi ini merupakan fungsi rekursif yang

terus berjalan sampai setiap pool memiliki jumlah data lebih kecil daripada

threshold.

Gambar 4.14 Implementasi Kode CreatePool

D. Potongan Kode Execute

Gambar 4.16 dan Gambar 4.17 merupakan potongan kode execute. Hal

pertama yang dilakukan di dalam fungsi ini adalah inisialisasi dan deklarasi variabel

yang dibutuhkan seperti poolSize, workers, pool_processed, thread_used, dan

result. Variabel poolSize merupakan jumlah pool yang harus diproses. Variabel

workers merupakan variabel yang berperan sebagai Web Workers. Variabel

pool_processed merupakan jumlah pool yang telah selesai diproses. Variabel

thread_used merupakan jumlah thread yang digunakan pada waktu tertentu.

Page 53: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

41

Variabel result merupakan sebuah array yang berfungsi untuk menyimpan semua

pool yang telah diproses.

Setelah inisialisasi dan deklarasi variabel, langkah selanjutnya adalah

melakukan perulangan dengan menggunakan kondisi nilai dari variabel

pool_processed harus lebih kecil dari nilai dari variabel poolSize dan nilai dari

variabel thread_used harus lebih kecil dari nilai variabel thread_count. Di dalam

kode perulangan tersebut, Web Workers dibuat dengan memanggil constructor

yang menerima parameter berupa file JavaScript worker.js. Gambar 4.15

merupakan potongan kode worker.js. Setelah itu, dilakukan proses pengiriman data

dari main thread ke worker dengan menggunakan fungsi postMessage. Data yang

dikirim adalah pool yang ingin diproses, fungsi yang melakukan pemrosesan, serta

waktu pengiriman (hanya untuk keperluan uji coba).

Worker menerima data yang dikirim dari main thread melalui fungsi

onmessage yang terdapat di worker.js. Di dalam fungsi onmessage, setiap data di

dalam pool ditransformasikan oleh worker menggunakan fungsi yang dikirim dari

main thread. Setelah transformasi selesai, data hasil pemrosesan dikirim kembali

ke main thread menggunakan fungsi postMessage yang terdapat di worker.js.

Kemudian data dari worker diterima oleh main thread melalui fungsi onmessage

pada main thread. Ketika sebuah worker selesai melakukan transformasi, fungsi

workerDone yang ditampilkan pada Gambar 4.17 dijalankan.

Di dalam fungsi workerDone, data hasil pemrosesan yang dikirim dari

worker disimpan ke dalam variabel result. Setelah itu, dilakukan pemeriksaan untuk

memastikan bahwa seluruh pool telah diproses oleh worker. Jika ada pool yang

Page 54: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

42

belum diproses oleh worker, maka pool tersebut dikirim ke worker untuk diproses.

Sedangkan jika seluruh pool telah selesai diproses oleh worker, fungsi

onExecutedFinished yang telah didefinisikan oleh programmer dijalankan oleh

main thread.

Gambar 4.15 Potongan Kode worker.js

Gambar 4.16 Implementasi Kode Execute I

Page 55: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

43

Gambar 4.17 Implementasi Kode Execute II

4.3 Uji Coba

Terdapat dua buah website yang digunakan untuk melakukan uji coba

library, yaitu website penghitung grade dan website kriptografi. Kedua website

diuji coba menggunakan skenario yang sama.

4.3.1 Skenario Uji Coba

Skenario uji coba library yang dilakukan adalah melakukan transformasi

data menggunakan library yang telah dibuat dimana library diimplementasikan

pada kedua website yang telah dibuat menggunakan satu, dua, empat, dan delapan

thread. Uji coba terhadap website hitung grade dilakukan menggunakan Rumus

4.1. Uji coba terhadap website kriptografi dilakukan menggunakan library CryptoJs

Page 56: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

44

dengan tiga metode enkripsi yaitu Advanced Encryption Standard (AES), Secure

Hash Algorithms 384 (SHA384), dan SHA512. Uji coba dilakukan untuk

mengetahui apakah implementasi metode ForkJoinPool menggunakan teknologi

Web Workers pada JavaScript sebagai library transformasi data mempengaruhi

kecepatan transformasi data. Adapun beberapa batasan yang perlu diketahui, yaitu

jumlah variabel threshold selalu diinisialisasikan sebesar jumlah data dibagi jumlah

thread dan variabel yang diuji dalam penelitian ini hanya kecepatan transformasi

data.

Proses transformasi data dilakukan terhadap N data dan Y thread. Data

yang digunakan dalam uji coba merupakan data yang bersifat acak. Jumlah

threshold ditentukan berdasarkan hasil dari N dibagi dengan Y. Uji coba dilakukan

sebanyak tiga kali untuk setiap kelompok N data dan Y thread. Sebagai ilustrasi,

uji coba enkripsi kata sandi dilakukan sebanyak tiga kali untuk 1.000 data dan satu

thread. Kemudian hasil yang didapat dari uji coba sebanyak tiga kali dirata-ratakan.

Setelah itu uji coba dilakukan untuk 1.000 data dan dua thread sebanyak tiga kali.

Hasil uji coba antara menggunakan satu thread dan dua thread dibandingkan.

Apabila hasil yang didapat menunjukkan perbedaan yang tidak signifikan, maka

jumlah data diganti menjadi 10.000 data. Oleh karena itu, jumlah data yang

digunakan bersifat adaptif tergantung pada hasil dari pengujian sebelumnya.

Paralelisme yang dilakukan adalah Coarse-grain parallelism terhadap jumlah data

yang diproses.

Page 57: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

45

4.3.2 Uji Coba Website Hitung Grade

Tabel 4.1 merupakan hasil yang didapatkan dari uji coba library

transformasi data pada website hitung grade. Pada uji coba pertama terdapat 10.000

data mahasiswa dimana masing-masing data terdiri dari nama, nomor induk

mahasiswa, nilai uts, nilai tugas, dan nilai uas. Kemudian perhitungan grade

dilakukan terhadap 10.000 data dengan menggunakan satu, dua, empat, dan delapan

thread dengan Rumus 2.1. Kemudian waktu yang dibutuhkan untuk melakukan

perhitungan grade dicatat. Perhitungan waktu dilakukan dalam satuan millisecond.

Sedangkan Kecepatan didapat dari pembagian antara jumlah data dengan waktu.

Satuan untuk kecepatan dalam kasus ini adalah data/millisecond. Perbandingan

kecepatan didapat dari pembagian kecepatan antara dua, empat, dan delapan thread

dengan satu thread.

Tabel 4.1 Hasil Uji Coba Website Hitung Grade

Dari hasil uji coba pada Tabel 4.1, dapat dilihat bahwa dengan

menggunakan library transformasi data mengakibatkan proses perhitungan grade

menjadi lebih lambat daripada menggunakan single thread. Semakin banyak data

yang digunakan untuk uji coba mengakibatkan penggunaan multithreading menjadi

tidak efektif. Berdasarkan hasil uji coba yang telah dilakukan, hal ini terjadi karena

waktu yang diperlukan untuk mengirimkan data dari main thread ke worker

Page 58: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

46

ataupun sebaliknya cukup besar. Faktor kedua yang mengakibatkan hal ini adalah

rendahnya waktu pemrosesan dari perhitungan grade. Dari kedua faktor di atas,

dapat disimpulkan bahwa semakin banyak data yang digunakan dalam uji coba

mengakibatkan perhitungan grade menggunakan library transformasi data menjadi

lebih lambat dibandingkan perhitungan grade menggunakan single thread. Tabel

4.2 menunjukkan waktu yang digunakan untuk mengirim data dari main thread ke

worker, melakukan fork, dan melakukan join cukup besar.

Tabel 4.2 Waktu Kirim, Fork, dan Join Website Hitung Grade

4.3.3 Uji Coba Website Kriptografi dengan AES 256 bit

Tabel 4.3 merupakan hasil yang didapatkan dari uji coba library

transformasi data pada website kriptografi menggunakan algoritma AES 256 bit.

Pada uji coba pertama terdapat 500 data dimana masing-masing data terdiri dari

username dan password. Kemudian password (64 bit) dari setiap data dienkripsi

menggunakan algoritma AES dengan menggunakan satu, dua, empat, dan delapan

thread dengan menggunakan library CryptoJS. Gambar 4.18 merupakan potongan

kode yang digunakan untuk melakukan enkripsi dengan algoritma AES.

Page 59: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

47

Gambar 4.18 Kode Enkripsi AES

Kemudian waktu yang dibutuhkan untuk melakukan enkripsi

menggunakan algoritma AES dicatat. Perhitungan waktu dilakukan dalam satuan

millisecond. Sedangkan Kecepatan didapat dari pembagian antara jumlah data

dengan waktu. Satuan untuk kecepatan dalam kasus ini adalah data/millisecond.

Perbandingan kecepatan didapat dari pembagian kecepatan antara dua, empat, dan

delapan thread dengan satu thread.

Tabel 4.3 Hasil Uji Coba Enkripsi Menggunakan Algoritma AES

Dari hasil uji coba pada Tabel 4.3, dapat dilihat bahwa dengan

menggunakan library transformasi data mengakibatkan proses enkripsi

menggunakan algoritma AES menjadi lebih cepat daripada menggunakan single

thread. Hal ini dapat dilihat dari meningkatnya kecepatan enkripsi yang berbanding

lurus dengan meningkatnya jumlah data yang diuji coba. Hal ini terjadi karena

waktu pemrosesan dari enkripsi menggunakan algoritma AES terbilang besar.

Waktu pemrosesan enkripsi menggunakan algoritma AES lebih besar jika

dibandingkan dengan waktu pemrosesan hitung grade. Hal ini dapat dilihat dari

Page 60: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

48

waktu yang dibutuhkan keduanya. Untuk menghitung grade 10.000 data mahasiswa

hanya membutuhkan waktu 11 millisecond. Sedangkan untuk melakukan enkripsi

dengan menggunakan algoritma AES pada 500 data membutuhkan waktu 306

millisecond.

4.3.4 Uji Coba Website Kriptografi dengan SHA384

Tabel 4.4 merupakan hasil yang didapatkan dari uji coba library

transformasi data pada website kriptografi menggunakan algoritma SHA384 untuk

melakukan hash. Pada uji coba pertama terdapat 1000 data dimana masing-masing

data terdiri dari username dan password. Kemudian password (64 bit) dari setiap

data dihash menggunakan algoritma SHA384 dengan menggunakan satu, dua,

empat, dan delapan thread dengan menggunakan library CryptoJS. Gambar 4.19

merupakan potongan kode yang digunakan untuk melakukan hash dengan

algoritma SHA384.

Gambar 4.19 Kode Hash Menggunakan SHA384

Kemudian waktu yang dibutuhkan untuk melakukan hash menggunakan

algoritma SHA384 dicatat. Perhitungan waktu dilakukan dalam satuan millisecond.

Sedangkan Kecepatan didapat dari pembagian antara jumlah data dengan waktu.

Satuan untuk kecepatan dalam kasus ini adalah data/millisecond. Perbandingan

kecepatan didapat dari pembagian kecepatan antara dua, empat, dan delapan thread

dengan satu thread.

Page 61: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

49

Tabel 4.4 Hasil Uji Coba Hash Menggunakan Algoritma SHA384

Dari hasil uji coba pada Tabel 4.4, dapat dilihat bahwa dengan

menggunakan library transformasi data mengakibatkan proses hash menggunakan

algoritma SHA384 menjadi lebih cepat daripada menggunakan single thread. Hal

ini dapat dilihat dari meningkatnya kecepatan enkripsi yang berbanding lurus

dengan meningkatnya jumlah data yang diuji coba. Hal ini terjadi karena waktu

pemrosesan hash menggunakan algoritma SHA384 terbilang besar. Waktu

pemrosesan dari hash menggunakan algoritma SHA384 lebih besar jika

dibandingkan dengan waktu pemrosesan hitung grade. Hal ini dapat dilihat dari

waktu yang dibutuhkan keduanya. Untuk menghitung grade 10.000 data mahasiswa

hanya membutuhkan waktu 11 millisecond. Sedangkan untuk melakukan hash

dengan menggunakan algoritma SHA384 pada 1.000 data membutuhkan waktu

157.33 millisecond.

Page 62: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

50

4.3.5 Uji Coba Website Kriptografi dengan SHA512

Tabel 4.5 merupakan hasil yang didapatkan dari uji coba library

transformasi data pada website kriptografi menggunakan algoritma SHA512 untuk

melakukan hash. Pada uji coba pertama terdapat 500 data dimana masing-masing

data terdiri dari username dan password. Kemudian password (64 bit) dari setiap

data dihash menggunakan algoritma SHA512 dengan menggunakan satu, dua,

empat, dan delapan thread dengan menggunakan library CryptoJS. Gambar 4.20

merupakan potongan kode yang digunakan untuk melakukan hash dengan

algoritma SHA512.

.

Gambar 4.20 Kode Hash Menggunakan Algoritma SHA512

Kemudian waktu yang dibutuhkan untuk melakukan hash menggunakan

algoritma SHA512 dicatat. Perhitungan waktu dilakukan dalam satuan millisecond.

Sedangkan Kecepatan didapat dari pembagian antara jumlah data dengan waktu.

Satuan untuk kecepatan dalam kasus ini adalah data/millisecond. Perbandingan

kecepatan didapat dari pembagian kecepatan antara dua, empat, dan delapan thread

dengan satu thread.

Dari hasil uji coba pada Tabel 4.5, dapat dilihat bahwa dengan

menggunakan library transformasi data mengakibatkan proses hash menggunakan

algoritma SHA512 menjadi lebih cepat daripada menggunakan single thread. Hal

ini dapat dilihat dari meningkatnya kecepatan enkripsi yang berbanding lurus

dengan meningkatnya jumlah data yang diuji coba. Hal ini terjadi karena waktu

Page 63: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

51

pemrosesan dari hash menggunakan algoritma SHA512 terbilang besar. Waktu

pemrosesan dari hash menggunakan algoritma SHA512 lebih besar jika

dibandingkan dengan waktu pemrosesan hitung grade. Hal ini dapat dilihat dari

waktu yang dibutuhkan keduanya. Untuk menghitung grade 10.000 data mahasiswa

hanya membutuhkan waktu 11 millisecond. Sedangkan untuk melakukan hash

dengan menggunakan algoritma SHA512 pada 500 data membutuhkan waktu 86

millisecond.

Tabel 4.5 Hasil Uji Coba Hash Menggunakan Algoritma SHA512

4.3.6 Rekapitulasi Hasil Uji Coba

Setelah semua uji coba telah dilakukan, rekapitulasi hasil uji coba

dilakukan. Berdasarkan hasil uji coba pada Tabel 4.1, kecepatan transformasi data

menggunakan library transformasi data untuk menghitung grade mahasiswa

berbanding terbalik dengan jumlah data yang digunakan dalam uji coba. Semakin

banyak data yang digunakan, kecepatan hitung grade menggunakan multithreading

semakin menurun. Hal ini terjadi karena rendahnya waktu pemrosesan dari

transformasi data dalam kasus perhitungan grade. Selain itu pengiriman data dari

main thread ke worker dan sebaliknya memakan waktu yang tidak sedikit. Gambar

Page 64: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

52

4.21 merupakan grafik garis yang menunjukkan hubungan antara jumlah data

dengan kecepatan pada website hitung grade berdasarkan data pada Tabel 4.1.

Rasio kecepatan yang dimaksud adalah perbandingan kecepatan antara N thread

terhadap 1 thread dimana jumlah data yang digunakan sesuai pada grafik.

Gambar 4.21 Grafik Hubungan Jumlah Data dengan Rasio Kecepatan pada

Website Hitung Grade

Berdasarkan hasil uji coba pada Tabel 4.3, Tabel 4.4, dan Tabel 4.5

memperlihatkan hasil yang cukup signifikan. Kecepatan transformasi data untuk

melakukan enkripsi dan hash menggunakan algoritma AES, SHA384, dan SHA512

berbanding lurus dengan jumlah data yang diuji. Semakin banyak data yang

digunakan, kecepatan enkripsi dan hash menggunakan multithreading semakin

meningkat. Berdasarkan waktu yang diperlukan pada setiap pengujian, waktu

pemrosesan algoritma AES, SHA384, dan SHA512 lebih besar dari waktu

pemrosesan hitung grade. Gambar 4.22 merupakan grafik garis yang menunjukkan

hubungan antara jumlah data dengan kecepatan pada website kriptografi dengan

0

0.01

0.02

0.03

0.04

0.05

0.06

0.07

0.08

10 ribu 50 ribu 100 ribu 200 ribu 250 ribu

Ras

io K

ecep

atan

Jumlah Data

Jumlah data Vs Rasio Kecepatan

2 Thread 4 Thread 8 Thread

Page 65: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

53

algoritma AES berdasarkan data pada Tabel 4.3. Rasio kecepatan yang dimaksud

adalah perbandingan kecepatan antara N thread terhadap 1 thread dimana jumlah

data yang digunakan sesuai pada grafik.

Gambar 4.22 Grafik Hubungan Jumlah Data dengan Rasio Kecepatan pada

Website Kriptografi Algoritma AES, SHA384, dan SHA512

Tabel 4.6 menggambarkan perbedaan waktu yang dibutuhkan untuk

setiap uji coba yang dilakukan menggunakan satu thread.

Tabel 4.6 Waktu Yang Dibutuhkan Untuk Setiap Uji Coba

Metode Jumlah Data Waktu(millisecond)

Hitung Grade 10.000 11

AES 10.000 5415

SHA384 10.000 1134,66

SHA512 10.000 1149

Istilah optimal point digunakan untuk menggambarkan titik dimana

library transformasi data memberikan manfaat. Optimal point ditentukan

berdasarkan hasil uji coba. Terdapat perbedaan optimal point dari ketiga algoritma

yang digunakan, yaitu AES, SHA384, dan SHA512. Sedangkan untuk proses

0.00

0.50

1.00

1.50

2.00

2.50

1 ribu 2 ribu 4 ribu 8 ribu 16 ribu 100 ribu

Ras

io K

ecep

atan

Jumlah Data

Jumlah data vs Rasio Kecepatan

2 Thread 4 Thread 8 Thread

Page 66: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

54

perhitungan grade, tidak ditemukan optimal point. Tabel 4.7 menggambarkan

optimal point untuk setiap algoritma. Optimal point untuk AES adalah 4.000 data.

Optimal point untuk SHA384 adalah 20.000 data. Optimal point untuk SHA512

adalah 20.000 data.

Tabel 4.7 Optimal Point

Algoritma Jumlah

Data

Waktu yang dibutuhkan(millisecond)

1 thread 2 thread 4 thread 8 thread

AES 4.000 1974.33 1549.33 1396 1951

SHA384 20.000 2289.66 1862 1567.33 2127.66

SHA512 20.000 2148.66 1863 1767 2237

Berdasarkan informasi pada Tabel 4.6, dapat diketahui bahwa waktu

pemrosesan dari algoritma AES merupakan yang paling besar dibandingkan

perhitungan grade, algoritma SHA384, dan algoritma SHA512. Sedangkan waktu

pemrosesan SHA384 dan SHA512 tidak jauh berbeda. Berdasarkan informasi pada

Tabel 4.7, dapat diketahui bahwa semakin besar waktu pemrosesan dari algoritma

yang digunakan semakin sedikit pula data yang dibutuhkan untuk mencapai optimal

point. Selain itu, waktu pemrosesan menggunakan delapan thread lebih besar

dibandingkan empat thread terjadi karena proses fork dan join pada delapan thread

memakan waktu yang lebih lama dibandingkan empat thread.

Gambar 4.23, Gambar 4.24, Gambar 4.25, dan Gambar 4.26 menunjukkan

central processing unit (CPU) utilization ketika menggunakan library transformasi

data menggunakan satu, dua, empat, dan delapan thread dengan algoritma AES

menggunakan 100.000 data. CPU utilization untuk satu, dua, empat, dan delapan

thread secara berurutan adalah 26%, 38%, 62%, dan 99%.

Page 67: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

55

Gambar 4.23 CPU Utilization Satu Thread

Gambar 4.24 CPU Utilization Dua Thread

Page 68: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

56

Gambar 4.25 CPU Utilization Empat Thread

Gambar 4.26 CPU Utilization Delepan Thread

Page 69: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

57

BAB V

SIMPULAN DAN SARAN

5.1 Simpulan

Metode ForkJoinPool telah berhasil diimplementasikan menggunakan

teknologi Web Workers pada JavaScript sebagai library transformasi data. Sistem

ini dibuat dengan menggunakan bahasa pemrograman HTML, CSS, dan JavaScript.

Terdapat dua website yang dibangun dan digunakan untuk uji coba, yaitu website

hitung grade dan website kriptografi. Paralelisme yang dilakukan adalah Coarse-

grain parallelism terhadap jumlah data yang diproses.

Berdasarkan hasil pengujian library transformasi data pada dua website

pengujian dengan menggunakan data acak, dimana algoritma yang digunakan pada

website kriptografi adalah Algoritma AES, SHA384 dan SHA512, dapat

disimpulkan bahwa implementasi metode ForkJoinPool menggunakan teknologi

Web Workers pada JavaScript sebagai library transformasi data mempengaruhi

kecepatan transformasi data. Jika waktu pemrosesan dari transformasi terlalu

rendah, maka penggunaan library transformasi data yang dibuat mengurangi

kecepatan transformasi data. Jika waktu pemrosesan dari transformasi cukup besar,

maka penggunaan library transformasi data meningkatkan kecepatan transformasi

data. Selain itu, fungsi transformasi data yang dijalankan oleh library didefinisikan

sendiri oleh pengguna library.

Page 70: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

58

5.2 Saran

Berdasarkan penelitian yang telah dilakukan, berikut adalah saran yang

dapat digunakan untuk penelitian selanjutnya.

1. Library transformasi data ini dapat diuji coba kembali dengan meneliti dan

mencari variabel threshold yang optimal untuk diimplementasikan pada

library ini.

2. Library transformasi data dapat dibuat dan diuji coba dengan menggunakan

metode lain, yaitu metode Parallel Streams karena metode Parallel Streams

cocok digunakan untuk memproses data yang jumlahnya banyak.

Page 72: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

60

Intel. (2012). Energy-Efficient Software Guidelines [online]. Tersedia dalam:

https://software.intel.com/en-us/articles/partner-energy-efficient-software-

guidelines [diakses 5 Oktober 2017].

Janssen, D., dan Janssen, C. (2017). Multithreading[online]. Tersedia dalam:

https://www.techopedia.com/definition/24297/multithreading-computer-

architecture [diakses 4 Oktober 2017].

Jenkov, J. (2015). Java Fork and Join using ForkJoinPool[online]. Tersedia dalam:

http://tutorials.jenkov.com/java-util-concurrent/java-fork-and-join-

forkjoinpool.html [diakses 6 Juni 2017].

Kehe, W., Rui, C., Yingqiang, Z., dan Hongtao, M. (2016). The Research On The

Software Architecture Of Network Packet Processing Based On The Many-

core Processor. Software Engineering and Service Science (ICSESS). Beijing,

China.

Kvatinsky, S., Nacson, Y. H., Etsion, Y., Eby, G., Friedman., Kolodny A., dan

Weiser, U. C. (2013). Memristor-Based Multithreading. IEEE Computer

Architecture Letters, vol. 13, no. 1, hal. 41-44.

Liu, C. H., Wu, C. J., dan Chen, H. M. (2016). Testing of AJAX-based Web

Applications Using Hierarchical State Model. e-Business Engineering

(ICEBE). Macau, China.

Long, J. (2014). Transducers.js: A JavaScript Library for Transformation of Data [online]. Tersedia dalam: http://jlongster.com/Transducers.js--A-

JavaScript-Library-for-Transformation-of-Data [diakses 10 Oktober 2017].

Maia, C., Yomsi, P. M., Nogueira, L., dan Pinho, L. M. (2015). Semi-Partitioned

Scheduling of Fork-Join Tasks using Work-Stealing. Embedded and

Ubiquitous Computing (EUC). Porto, Portugal.

Marcu, M., Tudor, D., Fuicu, S., Crisan, S. C., Maticu, F., dan Micea M. (2008).

Power Efficiency Study of Multi-threading Applications for Multi-core

Mobile Systems. WSEAS TRANSACTIONS on COMPUTERS, vol. 7, no. 12,

hal. 1875-1885.

Multisoftvirtualacademy.com. (2015). Common Advantages And Disadvantages of

Multithreading In Java [online]. Tersedia dalam:

http://www.multisoftvirtualacademy.com/blog/common-advantages-and-

disadvantages-of-multithreading-in-java/ [diakses 11 Oktober 2017].

Okamoto, S., dan Kohana, M. (2011). Load distribution by using Web Workers for

a real-time web application. International Journal of Web Information

Systems, vol. 7, no. 4, hal. 381-395.

Pan, Y., White, J., dan Sun, Y. (2016). Assessing the Threat of Web Worker

Distributed Attacks. Communications and Network Security (CNS).

Philadelphia, PA, USA.

Ponge, J. (2011). Fork and Join: Java Can Excel at Painless Parallel Programming

Too[online]. Tersedia dalam:

Page 73: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

61

http://www.oracle.com/technetwork/articles/java/fork-join-422606.html

[diakses 12 Oktober 2017].

Refsnes, H., Refsnes, S., dan Refsnes, J. E. (2017). HTML5 Web Workers [online].

Tersedia dalam: https://www.w3schools.com/html/html5_webworkers.asp

[diakses 7 Oktober 2017].

Rouse, M. (2005). Library [online]. Tersedia dalam:

http://searchsqlserver.techtarget.com/definition/library [diakses 10 Oktober

2017].

Septeriyan. (2018). Operasi Matematika Dasar [online]. Tersedia dalam:

https://independent.academia.edu/SepteriyanFs [diakses 12 Februari 2018].

Scholz, F. (2017). Array.prototype.map()[online]. Tersedia dalam:

https://googleweblight.com/?lite_url=https://developer.mozilla.org/en/docs/

Web/JavaScript/Reference/Global_Objects/Array/map&ei=zVqdtFwG&lc=

en-

ID&s=1&m=767&host=www.google.co.id&ts=1506393448&sig=ANTY_L

07-6XqIzgCMQgHfYg1CR8IJH6mtA [diakses 6 Oktober 2017].

Stewart, R., dan Singer, J. (2016). Comparing Fork/Join and MapReduce[online].

Tersedia dalam:

https://www.researchgate.net/publication/267958333_Comparing_ForkJoin

_and_MapReduce [diakses 6 Juni 2017].

Urbani, J., Kotoulas, S., Maassen, J., Harmelen, F. V., dan Bal H. (2012). A Web-

scale Parallel Inference Engine using MapReduce. J. Urbani et al. / Web

Semantics: Science, Services and Agents on the World Wide Web 10 (2012),

hal. 59-75.

Watanabe, Y., Kohana, M., Kamada, M., Okamoto, S., dan Tonekura, T. (2013). A

Parallelization of Interactive Animation Software with Web Workers.

Network-Based Information Systems (NBiS). Gwangju, South Korea.

Wenzel, M., dan Meinel, C. (2015). Parallel Network Data Processing in Client

Side JavaScript Applications. Collaboration Technologies and Systems

(CTS). Atlanta, GA, USA.

Wu, I.-C., dan Kung, H. T. (1991). Communication complexity for parallel divide-

and-conquer. In Proceedings of the 32nd Annual Symposium on Foundations

of Computer Science (FOCS) (San Juan, Puerto Rico, Oct. 1991). IEEE

Computer Society Press, Los Alamitos, Calif., hal. 151-162.

Zuidhof, R., dan Til, J. V. D. (2011).Comparison of MapReduce Implementations.

In Proceedings 8th Student Colloquium. University of Groningen, hal. 60-65.

Page 74: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

LAMPIRAN

1. Form Bimbingan Skripsi

2. Daftar Riwayat Hidup

3. Source Code Library

4. Data Uji Coba

Page 75: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …
Page 76: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …
Page 77: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …
Page 78: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …
Page 79: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …
Page 80: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

DAFTAR RIWAYAT HIDUP

Data Pribadi

Nama Lengkap : Drevendy Harianto

Tempat, Tanggal Lahir : Jakarta, 9 Desember 1996

Jenis Kelamin : Pria

Status : Belum Menikah

Agama : Buddha

Kewarganegaraan : Indonesia

Alamat : Jl. Rawa Bebek No.09 RT 001/012

Telepon : +6282261615808

Email : [email protected]

Latar Belakang Pendidikan

2014 – sekarang Universitas Multimedia Nusantara, Tangerang

Program Studi Informatika

2011 – 2014 SMA Budi Agung

2008 – 2011 SMP Budi Agung

2002 – 2008 SD Nusantara

2000 – 2002 TK Nusantara

Pengalaman Kerja

Tutor Algoritma dan Pemrograman TI 2015 – 2016

Pengalaman organisasi

2016 – 2017 Divisi Public Relation Komisi Pemilihan Umum 2017

Page 81: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

Pengalaman Kepanitiaan

2015 Divisi Perlengkapan TI Gathering 2015

2016 Divisi Ticketing U-Fest 2015

2017 Divisi Perlengkapan LDK UMN 2017

Divisi Public Relation Bulan Demokrasi 2017

Page 82: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

Source Code main.js (library) – part 1

Page 83: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

Source Code main.js (library) – part 2

Source Code main.js (library) – part 3

Page 84: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

Source Code worker.js – (Web Worker)

Page 85: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

Data Uji Coba

(data awal hitung grade)

nama nim nilai_uts nilai_tugas nilai_uas grade

Drevendy Harianto 20110110001 95 70 95 -

Rudiyanto 20110110002 98 76 56 -

Budi 20110110003 60 76 65 -

Andi 20110110004 75 72 90 -

Justin 20110110005 85 22 95 -

Indah 20110110006 86 61 75 -

Ani 20110110007 74 65 65 -

Yuni 20110110008 50 68 66 -

Patrick 20110110009 20 79 89 -

Budiman 20110110010 35 76 55 -

Eddy 20110110011 62 45 50 -

Wilson 20110110012 90 34 90 -

Kevin 20110110013 100 65 65 -

Antoni 20110110014 40 75 75 -

Susi 20110110015 75 64 75 -

Stella 20110110016 94 60 65 -

(data hitung grade setelah diproses)

nama nim nilai_uts nilai_tugas nilai_uas grade

Drevendy Harianto 20110110001 95 70 95 A

Rudiyanto 20110110002 98 76 56 B

Budi 20110110003 60 76 65 B-

Andi 20110110004 75 72 90 A

Justin 20110110005 85 22 95 B

Indah 20110110006 86 61 75 B

Ani 20110110007 74 65 65 B-

Yuni 20110110008 50 68 66 C+

Patrick 20110110009 20 79 89 B-

Budiman 20110110010 35 76 55 C

Eddy 20110110011 62 45 50 D

Wilson 20110110012 90 34 90 B

Kevin 20110110013 100 65 65 B+

Antoni 20110110014 40 75 75 C+

Susi 20110110015 75 64 75 B

Stella 20110110016 94 60 65 B

Page 86: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …

(data awal website kriptografi)

username password pw_enkripsi

drevendy jjMurYf9 -

Rudiyanto ZlxUGlAQ -

Budi ydIllbS3 -

Andi gZbLHfTm -

Justin kx2lIaNH -

Indah qY5w57Vk -

Ani aLLwKc8L -

Yuni bRnWvy0v -

Patrick TZOXW3sn -

Budiman boiyMksN -

Eddy eGVMyQNf -

Wilson 6CeAEdo6 -

Kevin 8lF4qtgb -

Antoni O6NHQcdE -

Susi QTXvpbnN -

Stella UnTiFb34 -

drevendy 57kcZEYI -

drevendy PMKDaHgB -

(data kriptografi setelah diproses)

username password pw_enkripsi

drevendy jjMurYf9 CI2nuA41+C4ZqAEEMNZZfQ==

Rudiyanto ZlxUGlAQ 51W/zy8iZfTHFGzHg9VTsg==

Budi ydIllbS3 w0+HYUTJvNlayVDOMN/g+w==

Andi gZbLHfTm btDByPtnCNQBpx8jbwn2Dg==

Justin kx2lIaNH /wQyH7OOoU9BZm+419hDeA==

Indah qY5w57Vk Sm29uCFNsbUNf6F8h1/7Sg==

Ani aLLwKc8L CCpLf8BYHQx3uBeWho7oTw==

Yuni bRnWvy0v ygn43KYWocf5OU0wbQvucg==

Patrick TZOXW3sn BFMiwOCGt8tZQXZZ96qMCg==

Budiman boiyMksN 7LhoNEbs5tpN/h8Kv3FJYg==

Eddy eGVMyQNf DQ0tgbnGmchk9Unq/JSAag==

Wilson 6CeAEdo6 +9AXnvzrF2Pv3rZguaJF4g==

Kevin 8lF4qtgb Jn8jZnVhpwmr33eZFG5cSw==

Antoni O6NHQcdE 5ZHQWHTyzILj9jCLdP3TRg==

Susi QTXvpbnN 5DRusepT2XRKIgZdQG5ISg==

Stella UnTiFb34 OlXZPEhYuQH4+kBr9GgRRg==

drevendy 57kcZEYI LLZLBqi4T2oW1Grf/bTecg==

drevendy PMKDaHgB Qd1hfElEgoo5R3ynHrd2yg==

Page 87: IMPLEMENTASI METODE FORKJOINPOOL MENGGUNAKAN …