Praktik Terbaik untuk Fungsi Getter
Saya memiliki larik yang ingin saya tampilkan di situs web , unit public x[31]
. Melalui web3.js, saya dapat membuat 32 panggilan berbeda ke x [0] hingga x [31]. Alternatifnya, saya bisa menambahkan fungsi getter view ke kontrak soliditas saya yang hanya menampilkan array
function showX()
public
view
returns (uint[32] memory Xout)
{
Xout= x;
}
Dengan fungsi ini built-in pada kontrak soliditas saya, saya hanya perlu memanggil ini sekali di file javascript saya, dan kemudian memiliki array. Jadi, saya bisa mendorong lebih banyak pekerjaan ke javascript, atau soliditas. Apakah salah satu metode lebih efisien / elegan?
Jawaban
Karena Anda berurusan dengan view
fungsi, tidak banyak perbedaan. Data diambil langsung dari node yang Anda gunakan dan tidak ada transaksi nyata ke blockchain. Oleh karena itu, Anda memanfaatkan lebih banyak komputasi browser (JavaScript) atau komputasi node Anda. Panggilan ini juga tidak memerlukan biaya bensin.
Dari sudut pandang arsitektur, saya hanya akan mempertimbangkan kebutuhan Anda: jika Anda mungkin tidak perlu mengambil banyak entri, mungkin lebih mudah untuk mengambilnya satu per satu. Di sisi lain, kita mungkin berbicara tentang jumlah data yang sangat kecil, apa pun cara Anda melakukannya, jadi tidak ada perbedaan nyata dalam hal kecepatan atau persyaratan memori. Saya juga tidak berpikir cara mana pun lebih elegan dari yang lain - pertimbangkan saja kebutuhan Anda.