Kecepatan menjalankan perangkat lunak harus berada dalam kisaran yang dapat diterima oleh pengguna. Seringkali, meningkatkan kecepatan rutinitas yang berumur pendek namun sering digunakan akan sangat meningkatkan kecepatan perangkat lunak secara keseluruhan.
Untuk meningkatkan kecepatan tentunya Anda harus bisa mengukur waktu terlebih dahulu. Oke, kalau begitu mari kita perhatikan situasi di lintasan. Begitu pistol berbunyi, tekan stopwatch untuk memulai penghitungan waktu, dan mengakhiri penghitungan waktu saat pemain mencapai garis finis . Sebelum memulai putaran berikutnya, stopwatch harus direset ke nol. .NET2.0 juga menyediakan stopwatch: kelas Stopwatch, yang dapat mengukur waktu dengan lebih akurat.
Tes kecepatan:
Performa dan kemampuan pengujian perangkat lunak adalah topik yang kompleks. Memastikan bahwa aplikasi memenuhi harapan pengguna memerlukan pertimbangan kinerja dan kemampuan pengujiannya selama siklus pengembangan. Hal ini penting selama tahap desain, desain yang buruk hampir pasti akan menghasilkan pengalaman pengguna yang buruk. Namun, desain yang baik saja tidak menjamin bahwa program akan berjalan secara efisien. Kualitas kode akhir juga sama pentingnya.
Mengukur rutinitas jangka panjang cukup sederhana. Jika suatu proses berlangsung beberapa menit, jam tangan dapat digunakan untuk mencatat waktu. Misalnya, untuk proses yang memerlukan waktu dua menit untuk dieksekusi, peningkatan 10% dapat menghemat 12 detik, yang mudah ditentukan.
Dan jika Anda ingin mengukur proses jangka pendek, Anda harus mempertimbangkan akurasi yang lebih baik. Misalnya, ada beberapa rutinitas yang sangat kecil yang mungkin hanya memerlukan seperseribu detik untuk dijalankan, namun akan dipanggil 1 juta kali. Efek kumulatifnya jelas. Di versi .NET framework sebelumnya, Anda perlu menggunakan fungsi Windows API, dan di .NET framework 2.0, Microsoft memperkenalkan kelas Stopwatch (ini adalah stopwatch kami) untuk menyederhanakan tugas pengukuran waktu.
Kelas stopwatch:
Menggunakan kelas Stopwatch untuk mengukur waktu sangatlah sederhana. Seperti stopwatch dalam kehidupan nyata, objek kelas ini juga dapat memulai, menghentikan, dan kembali ke nol (reset) penghitung, namun jauh lebih akurat daripada stopwatch biasa. Ia dapat akurat hingga mikrodetik (yaitu jutaan detik). .sepersekian detik).
Contoh kode:
Untuk mendemonstrasikan penggunaan Stopwatch, mari gunakan sepotong kode. Berikut adalah aplikasi konsol yang mengakumulasi semua bilangan bulat antara 1 dan 1 juta:
menggunakan Sistem;
namespace StopWatchClass
{
Program kelas
{
kekosongan statis Utama (string[] args)
{
total panjang = 0;
untuk (int i = 1; i <= 10000000; i++)
{
jumlah += saya;
}
}
}
}
Tambahkan objek Stopwatch:
Kelas Stopwatch terletak di namespace System.Diagnostics. Berikut kode setelah menambahkan objek:
menggunakan Sistem;
menggunakan System.Diagnostics;
namespace StopWatchClass
{
Program kelas
{
kekosongan statis Utama (string[] args)
{
Pengatur waktu stopwatch = Stopwatch baru();
total panjang = 0;
untuk (int i = 1; i <= 10000000; i++)
{
jumlah += saya;
}
}
}
}
Kontrol objek Stopwatch:
Stopwatch menyediakan beberapa metode untuk mengontrol objek Stopwatch. Metode Mulai memulai operasi penghitungan waktu, dan metode Berhenti menghentikan penghitungan waktu. Pada saat ini, jika metode Start digunakan untuk kedua kalinya, pengaturan waktu akan berlanjut, dan hasil pengaturan waktu akhir adalah akumulasi dari kedua pengaturan waktu tersebut. Untuk menghindari situasi ini, gunakan metode Reset untuk mereset objek ke nol sebelum pengatur waktu kedua. Tak satu pun dari ketiga metode ini memerlukan parameter. Kodenya adalah:
menggunakan Sistem;
menggunakan System.Diagnostics;
namespace StopWatchClass
{
Program kelas
{
kekosongan statis Utama (string[] args)
{
Pengatur waktu stopwatch = Stopwatch baru();
total panjang = 0;
pengatur waktu.Mulai();
untuk (int saya = 1; saya <= 10000000; saya++)
{
jumlah += saya;
}
pengatur waktu.Berhenti();
}
}
}
Baca hasil Stopwatch:
<!--[if !supportLists]--><!--[endif]--> Setelah mengakhiri timing, langkah selanjutnya adalah membaca hasil timing. Kelas Stopwatch menyediakan properti berikut:
<!--[if !supportLists]--><!--[endif]--><!--[if !supportLists]--><!--[endif]-->
Elapsed: Mengembalikan objek TimeSpan, mewakili interval waktu;
ElapsedMilliseconds: Mengembalikan jumlah mikrodetik yang dilewati oleh waktu. Akurasinya sedikit berkurang, cocok untuk waktu yang sedikit lebih lama;
ElapsedTicks: Mengembalikan jumlah waktu yang telah berlalu. Centang pengatur waktu adalah satuan pengukuran terkecil yang mungkin untuk objek Stopwatch. Lamanya waktu centang pengatur waktu ditentukan oleh komputer dan sistem operasi tertentu. Nilai bidang statis Frekuensi pada objek Stopwatch mewakili jumlah detak pengatur waktu yang terdapat dalam satu detik. Perhatikan perbedaan satuan waktu yang digunakan oleh properti Ticks TimeSpan.
Salah satu properti ini harus dipilih berdasarkan tugas pengaturan waktu. Dalam program contoh kita, properti Elapsed memberikan presisi yang diperlukan untuk menampilkan jumlah mikrodetik yang telah berlalu. Ini juga merupakan akurasi TimeSpan tertinggi.
Berikut adalah kode program terakhir:
menggunakan Sistem;
menggunakan System.Diagnostics;
namespace StopWatchClass
{
Program kelas
{
kekosongan statis Utama (string[] args)
{
Pengatur waktu stopwatch = Stopwatch baru();
total panjang = 0;
pengatur waktu.Mulai();
untuk (int saya = 1; saya <= 10000000; saya++)
{
jumlah += saya;
}
timer.Stop();
desimal mikro = timer.Elapsed.Ticks / 10m;
Console.WriteLine("Waktu eksekusi adalah {0:F1} mikrodetik.", mikro);
}
}
}
Selain itu, gunakan properti IsRunning untuk memeriksa apakah instans Stopwatch memiliki waktu, dan gunakan metode StartNew untuk memulai pengatur waktu baru.