Skip to content

RafliMahesa/exercise-profiling

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Module 5

Reflection

Hasil JMeter GUI sebelum profiling:
/all-studentendpoint /all-student-nameendpoint /highest-gpaendpoint

Hasil JMeter CLI sebelum profiling:
/all-studentendpoint /all-student-nameendpoint /highest-gpaendpoint

Hasil JMeter CLI setelah profiling:
/all-studentendpoint /all-student-nameendpoint /highest-gpaendpoint

Berdasarkan foto diatas, terlihat bahwa *profiling* membuat *time elapsed* pada method-method di kode yang awalnya cukup terbilang lama menjadi berkali-kali jauh lebih cepat. Setelah itu, dapat disimpulkan bahwa optimasi terhadap alur program tentu berpengaruh juga terhadap pengujian aplikasi secara *blackbox* dengan memanfaatkan JMeter.
  1. What is the difference between the approach of performance testing with JMeter and profiling with IntelliJ Profiler in the context of optimizing application performance?

    Pengujian menggunakan JMeter tidak terlalu fokus pada internal dari aplikasi atau program, sehingga sering dianggap sebagai metode pengujian blackbox. Ini karena JMeter hanya bertugas untuk mengirim permintaan ke endpoint yang telah ditentukan, sesuai dengan jumlah yang diminta oleh pengujinya. JMeter bertindak dengan mengevaluasi apakah permintaan tersebut dapat dijalankan dengan sukses dan mendapatkan respons. Di sisi lain, pendekatan profiling lebih mendalam dalam memeriksa proses internal program saat menerima suatu permintaan. Melalui profiling, saya dapat mengidentifikasi bagian mana dari program yang membutuhkan waktu paling lama untuk dieksekusi dibandingkan dengan bagian lain, memungkinkan optimisasi yang lebih efektif terhadap kode.

  2. How does the profiling process help you in identifying and understanding the weak points in your application?

    Melalui profiling, saya dapat mengidentifikasi komponen mana dalam program yang memperlambat performa aplikasi secara umum. Ini memungkinkan saya untuk fokus mengoptimalkan komponen tersebut, yang pada gilirannya akan meningkatkan efisiensi keseluruhan aplikasi tanpa harus mengubah banyak aspek lainnya.

  3. Do you think IntelliJ Profiler is effective in assisting you to analyze and identify bottlenecks in your application code?

    Benar, seperti yang dijelaskan dalam tutorial tersebut, dengan menggunakan Intellij profiler, saya dapat mengungkap bahwa bagian program yang paling memboroskan waktu, misalnya metode getAllStudentWithCourse yang memperlukan loop terlalu berlebih. Profiler ini bahkan memungkinkan saya untuk melihat baris kode mana dalam metode tersebut yang paling mempengaruhi efisiensi metode. Dengan informasi tentang berapa lama waktu yang dibutuhkan untuk menjalankan setiap pemanggilan fungsi, saya menjadi lebih mudah untuk mengidentifikasi komponen mana dalam program yang menjadi hambatan utama bagi kinerja aplikasi secara keseluruhan.

  4. What are the main challenges you face when conducting performance testing and profiling, and how do you overcome these challenges?

    Kesulitan terbesar yang saya hadapi dalam pengujian performa dan profiling terletak pada kemampuan untuk menginterpretasikan output yang relevan dan mengidentifikasi komponen mana dalam program yang bertindak sebagai penghambat utama. Untuk mengatasi ini, solusinya adalah dengan mempelajari dan memahami hasil output dari JMeter atau profiler secara lebih teliti. Ini mungkin memerlukan waktu untuk terbiasa dengan teknologi baru tersebut agar dapat lebih mudah memahami informasi yang cukup detail.

  5. What are the main benefits you gain from using IntelliJ Profiler for profiling your application code?

    Seperti yang telah dibahas sebelumnya, menggunakan profiler dari IntelliJ memungkinkan saya untuk mengidentifikasi komponen program yang mengalami kebuntuan, mengetahui durasi yang dibutuhkan untuk menjalankan sebuah pemanggilan metode, dan menentukan frekuensi pemanggilan metode tersebut. Dengan informasi ini, kita dapat menargetkan area spesifik untuk optimasi dan membedakan mana yang tidak perlu diutak-atik. Penting untuk diingat bahwa "optimasi prematur merupakan sumber segala masalah" karena optimasi yang tergesa-gesa tidak hanya bisa mengurangi keterbacaan kode, tetapi juga dapat menyebabkan komplikasi yang tidak perlu.

  6. How do you handle situations where the results from profiling with IntelliJ Profiler are not entirely consistent with findings from performance testing using JMeter?

    Setelah mengerjakan sejauh ini, belum terdapat ke tidak konsistenan dalam hasil performance testing yang dikeluarkan oleh IntelliJ Profiler dengan JMeter. Ini menunjukkan bahwa kedua aplikasi tersebut telah memberikan pandangan yang konsisten tentang bagaimana performa aplikasi dalam konteks pengujian kode saya.

  7. What strategies do you implement in optimizing application code after analyzing results from performance testing and profiling? How do you ensure the changes you make do not affect the application's functionality?

    Berdasarkan strategi nomor 2, setelah melakukan tes dan profiling, langkah yang saya ambil adalah mengevaluasi durasi yang dibutuhkan oleh program untuk merespons permintaan melalui JMeter. Bila respons terasa lambat, saya akan menggunakan profiler untuk mengidentifikasi bagian kode mana yang menyebabkan penundaan dan kemudian mencari solusi untuk mempercepat proses tersebut. Untuk memverifikasi keakuratan kode pasca-modifikasi, saya memastikan bahwa outputnya tetap konsisten dengan sebelum dilakukan perubahan.

    Pendekatan yang lebih efektif adalah dengan membuat unit test, sebagaimana diuraikan dalam tutorial sebelumnya. Dengan menjalankan unit test dan memastikannya berhasil, dapat diasumsikan bahwa kode yang telah direfaktor berfungsi dengan baik, asalkan unit testnya dirancang dengan benar dan relevan. Ini memungkinkan fokus perbaikan hanya pada aspek-aspek yang memang memerlukan peningkatan, tanpa perlu mengubah seluruh bagian kode.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%