Dart中整数变量的大小是多少

Dart中整数变量的大小是多少,dart,int,size,Dart,Int,Size,在Dart站点,他们说整数的大小是64位,这是整数的最大大小,还是任何整数的大小,即使整数是一个小数字,比如12 如果每个整数大小都是64位,这会影响应用程序的性能吗?答案是:“这取决于” 首先,如果将Dart编译为JavaScript,则所有数字都是JavaScript数字,这意味着Dartdoubles。即使是整数,它们也恰好是非分数倍。这意味着您最多有53位精度 本机Dart编号是64位整数。虚拟机可以在内部将它们表示为较小的数字,如果它可以看到这方面的优势的话 在64位虚拟机上,所有指针

在Dart站点,他们说整数的大小是64位,这是整数的最大大小,还是任何整数的大小,即使整数是一个小数字,比如12

如果每个整数大小都是64位,这会影响应用程序的性能吗?

答案是:“这取决于”

首先,如果将Dart编译为JavaScript,则所有数字都是JavaScript数字,这意味着Dart
double
s。即使是整数,它们也恰好是非分数倍。这意味着您最多有53位精度

本机Dart编号是64位整数。虚拟机可以在内部将它们表示为较小的数字,如果它可以看到这方面的优势的话

在64位虚拟机上,所有指针都是64位的,因此不能在堆中存储任何小于64位的指针(至少在类型化数据列表之外)。但是,如果您的值是63位有符号整数,VM可以直接将其存储在指针(所谓的“小整数”或“smi”)中,否则它必须分配一个堆对象来存储64位,这样它仍然可以分辨整数和堆指针之间的差异。这对垃圾收集很重要

在32位VM上,所有指针都是32位的,如果整数是31位有符号整数,则可以将其存储在指针中,否则它将成为堆对象

那是用来储存数字的。对于函数内部的局部变量,VM可以选择取消对值的装箱,在堆栈上存储普通整数,而不是堆数或标记的小整数。如果编译器知道您只使用16位整数,那么它(理论上)只能使用16位。实际上,任何小于32位的操作都可能效率较低,甚至在64位平台上也是如此

这些优化是出于性能原因而发生的,因此是的,它会影响性能,编译器会尝试避免不必要的开销

这就是当前的实现。只要在运行程序时无法分辨差异,它随时都可能发生变化。

您读过以下内容吗?