Kapan menggunakan String.getBytes("") dan Charset.enocde(String) ?

A) penggunaan string getbyte mengembalikan "testingtestingtestingtesting".getBytes(StandardCharsets.UTF_8);

B) penggunaan charset encode
Charset charset = Charset.forName(StandardCharsets.UTF_8.toString()); kembali charset.encode("testingtestingtestingtestingtesting").array()

Pengujian cepat menunjukkan str.getbytes jauh lebih cepat daripada charset.encode.

  1. Mengapa str.getbytes lebih cepat dari charset.encode

  2. Apa faktor yang harus memutuskan memilih antara 2 pilihan ini?

Hasil pengujian: metode getBytes() membutuhkan waktu 1328 md sedangkan charset.encode() membutuhkan waktu 1804 md

hasil pengujian dengan program sampel

-1
M. Shashanka 9 Juli 2020, 14:35

1 menjawab

Jawaban Terbaik
  1. Rangkaian karakter UTF_8 menggunakan ArrayEncoder dan getBytes() memiliki jalur cepat untuk itu.
  2. Charset.encode selalu membungkus parameter sebagai CharBuffer dan mengembalikan ByteBuffer alih-alih byte[], dan menggunakan cache encoder. String.getBytes selalu buat CharsetEncoder baru dan gunakan char[] untuk encoding, dan memiliki jalur cepat untuk ArrayEncoder.

Selain itu, ArrayEncoder juga merupakan encoder jalur cepat untuk pengkodean char[] ke byte[].

Namun, kinerja ini tidak boleh dipertimbangkan di sebagian besar aplikasi.

0
Mirro Mutth 9 Juli 2020, 12:08