System.currentTimeMillis()
Jelas yang paling efisien karena bahkan tidak membuat objek, tetapi new Date()
sebenarnya hanya pembungkus tipis tentang panjang, jadi tidak jauh di belakang. Calendar
, di sisi lain, relatif lambat dan sangat kompleks, karena harus berurusan dengan kompleksitas yang sangat dan semua keanehan yang melekat pada tanggal dan waktu (tahun kabisat, penghematan siang hari, zona waktu, dll.).
Biasanya merupakan ide bagus untuk hanya berurusan dengan cap waktu yang panjang atau Date
objek dalam aplikasi Anda, dan hanya digunakan Calendar
ketika Anda benar-benar perlu melakukan perhitungan tanggal / waktu, atau memformat tanggal untuk menampilkannya kepada pengguna. Jika Anda harus melakukan banyak hal, menggunakan Joda Time mungkin ide yang bagus, untuk antarmuka yang lebih bersih dan kinerja yang lebih baik.
Melihat JDK, konstruktor terdalam untuk
Calendar.getInstance()
memiliki ini:jadi sudah otomatis melakukan apa yang Anda sarankan. Konstruktor default Date memegang ini:
Jadi benar-benar tidak perlu untuk mendapatkan waktu sistem khusus kecuali Anda ingin melakukan matematika dengannya sebelum membuat objek Kalender / Tanggal Anda dengannya. Juga saya harus merekomendasikan joda-waktu untuk digunakan sebagai pengganti untuk kalender / tanggal kelas Java sendiri jika tujuan Anda adalah untuk bekerja dengan banyak perhitungan tanggal.
sumber
Jika Anda MENGGUNAKAN tanggal maka saya sangat menyarankan Anda menggunakan jodatime, http://joda-time.sourceforge.net/ . Menggunakan
System.currentTimeMillis()
untuk bidang yang adalah tanggal suara seperti ide yang sangat buruk karena Anda akan berakhir dengan banyak kode berguna.Baik tanggal dan kalender benar-benar kacau, dan Kalender jelas merupakan pemain terburuk dari semuanya.
Saya menyarankan Anda untuk menggunakan
System.currentTimeMillis()
ketika Anda benar-benar beroperasi dengan milidetik, misalnya seperti inisumber
Saya lebih suka menggunakan nilai yang dikembalikan oleh
System.currentTimeMillis()
untuk semua jenis perhitungan dan hanya menggunakanCalendar
atauDate
jika saya harus benar-benar menampilkan nilai yang dibaca oleh manusia. Ini juga akan mencegah 99% bug di siang hari Anda. :)sumber
Di mesin saya, saya mencoba memeriksanya. Hasil saya:
Jangan lupa tentang GC (jika Anda menggunakan
Calendar.getInstance()
ataunew Date()
)sumber
Tergantung pada aplikasi Anda, Anda mungkin ingin mempertimbangkan untuk menggunakannya
System.nanoTime()
.sumber
nanoTime
dikembalikan relatif (biasanya pada awal program) dan akan menjadi omong kosong jika Anda mencoba mengubahnya menjadi tanggal.Saya mencoba ini:
Dan hasilnya adalah:
Tanggal (): 199
currentTimeMillis (): 3
sumber
System.currentTimeMillis()
jelas yang tercepat karena hanya satu metode panggilan dan tidak ada pengumpul sampah yang diperlukan.sumber