Video: The Leaderonomics Show - Dato 'CM Vignaesvaran CEO of HRDF 2024
Menganalisis prestasi mungkin salah satu tugas yang paling kompleks dalam merancang sebarang aplikasi. Ia adalah sains yang tidak tepat kerana terdapat banyak faktor yang berlaku. Ini diperkuat dalam aplikasi Enterprise JavaBeans (EJB), di mana prestasi sebahagian besarnya bergantung kepada pelaksanaan bekas EJB yang anda gunakan. Intinya ialah anda tidak boleh mengetahui jika anda membuat keputusan prestasi yang betul sehingga anda mengujinya.
Berikut adalah beberapa isu yang perlu diingat semasa mempertimbangkan isu prestasi:
- Tidak semua bekas EJB dicipta sama. Walaupun setiap bekas EJB mesti mematuhi spesifikasi EJB, vendor mempunyai latitud luas dalam melaksanakan kontena EJB. Keperluan mereka memberi tumpuan kepada hasil operasi, bukan pada kecekapan operasi. Sesetengah vendor akan melakukan pekerjaan yang lebih baik dengan bahagian yang berlainan daripada bekas EJB. Anda mesti menentukan di mana kecekapan boleh diperolehi dalam bekas EJB dan di mana kesesakan prestasi akan berlaku. Satu-satunya cara untuk mengetahui dengan pasti adalah untuk mencuba sebelum anda membeli. Walaupun selepas anda membeli penyelesaian, keputusan reka bentuk utama, seperti sama ada atau tidak menggunakan kacang entiti EJB, harus diuji.
- Prestasi boleh bergantung kepada kecekapan permohonan anda. Terdapat peraturan am yang boleh anda gunakan untuk membantu menentukan reka bentuk aplikasi yang lebih baik daripada yang lain. Tetapi garis panduan ini boleh dengan mudah dibatalkan dengan pelaksanaan yang tidak stabil. Cara terbaik untuk memastikan anda mengelakkan pelaksanaan ceroboh adalah dengan menjalankan penilaian kod yang biasa - iaitu ketika anda duduk bersama dengan semua rakan kerja pengekodan anda dan minta mereka mengkaji semula kerja anda - semasa projek EJB anda. Anda harus memfokuskan ulasan kod anda untuk menganalisis sumber dan memastikan ia baik direka dan cekap. Ulasan kod menawarkan peluang yang baik untuk programmer untuk belajar dari satu sama lain.
- Buat prototaip untuk menguji andaian prestasi anda. Berikut adalah senario sampel. Sebagai pemaju aplikasi EJB, anda harus membuat keputusan awal sama ada menggunakan kacang entiti untuk menguruskan interaksi dengan pangkalan data. Dua pilihan asas anda ialah
• Buat biji entiti untuk menguruskan interaksi pangkalan data. Buah entiti dapat memudahkan interaksi pangkalan data anda dari perspektif pengaturcaraan aplikasi. Tetapi mereka juga boleh menentukan penalti prestasi. Sesetengah penalti itu boleh dikawal dengan cara anda melaksanakan kacang entiti - iaitu, dengan menggunakan antara muka tempatan berbanding antara muka jauh atau dengan membuat objek entiti kacang kasar.
• Kod pangkalan data JDBC memanggil terus ke dalam kacang sesi dan mengelakkan penggunaan kacang entiti sama sekali. JDBC boleh menjadi lebih sukar untuk bekerja daripada menggunakan biji entiti dengan ketekunan yang dikendalikan oleh kontena. Kursus ini juga boleh menjejaskan keupayaan anda untuk memanfaatkan transaksi EJB yang dikendalikan oleh kontena.
Untuk menentukan yang mana dua kursus ini lebih sesuai, anda boleh melakukan ujian mudah:
1. Buat kacang entiti dan kacang sesi yang kedua-duanya melakukan operasi pada set data yang sama dari pangkalan data.
2. Tulis program mudah yang mengukur jumlah masa yang diperlukan untuk memanggil satu set sisipan, kemas kini, pertanyaan, dan perubahan kepada pangkalan data.
Program kedua ini harus memohon kacang sesi untuk satu ujian dan kacang entiti untuk ujian lain - melaksanakan satu set operasi yang sama pada setiap satu.
3. Menganalisis keputusan untuk menentukan sama ada prestasi akan menjadi isu.
Jika anda mahukan analisa prestasi yang lebih halus, anda boleh meluangkan masa langkah individu - untuk mengenal pasti operasi paling mahal - dan kemudian cuba ubah suai operasi tersebut untuk menjana keuntungan prestasi.
Untuk kacang entiti, anda mungkin ingin mengukur prestasi operasi berikut:
- Berapa lamakah diperlukan untuk mendapatkan rujukan kepada antara muka jauh atau antara muka tempatan?
- Apakah perbezaan prestasi antara melaksanakan kemas kini pada antara muka jauh dan antara muka tempatan?
- Apakah perbezaan antara mengemas kini berbilang baris dalam pangkalan data di JDBC dan melaksanakan kemas kini pada berbilang baris menggunakan kaedah rumah kacang entiti?
Jawapan kepada soalan-soalan ini akan berbeza dari bekas EJB ke bekas EJB dan juga akan dipengaruhi oleh: a) pemandu JDBC yang anda pilih; b) sama ada anda menggunakan penyatuan sambungan pangkalan data atau tidak; dan c) kecekapan pelaksanaan anda kacang entiti dan kacang sesi. Anda mungkin akan terkejut dengan beberapa hasil yang anda dapat - ujian seperti ini mempunyai cara mencabar anggapan anda tentang prestasi kacang entiti.
Apabila anda menyempurnakan EJB untuk prestasi, jangan buat perubahan secara rawak. Sebaliknya, tumpukan perhatian anda pada langkah-langkah dalam aplikasi yang paling mahal dari segi prestasi.
Nota: Pengukuran prestasi biasanya mendedahkan bahawa proses perniagaan hanya mempunyai satu atau dua mata di mana peningkatan yang ketara dapat dibuat. Pemerhatian ini telah dibuat cukup kerap bahawa ia membawa kepada penciptaan peraturan Pareto 80-20. Peraturan itu menyatakan bahawa 80 peratus masa pelaksanaan sesuatu program adalah disebabkan oleh 20 peratus kod. Matlamat anda adalah untuk mengenal pasti 20 peratus daripada kod yang paling mahal dari segi sumber sistem dan memberi tumpuan untuk mengoptimumkan bahagian itu.