我读过一些关于VBA性能优化的文章,并了解到在32位VBA应用程序中,内存使用优化与性能优化是有区别的。
内存优化的一个例子是使用适合您的应用程序的最小变量(例如使用Int而不是长浮点数)。
为了提高性能,它似乎要将可变大小的位与操作系统相匹配,这样它就不必进行从8位到32位的“遮罩下”的任何类型转换。
我是否可以假设此逻辑扩展到运行VBA7的Excel 365的64位版本?Ie,LongLong (64位)是否是以内存使用为代价处理整数的最优性能优化方法,而不是Long或Int?
编辑:有一个答案here显示了在64位操作系统上测试的结果,答案是使用Longs,但是优化并不能节省多少时间(13s,超过10亿次操作)。
发布于 2022-08-02 23:54:12
在64位标准整数大小是32位(和有符号)。内存寻址为64位(且未签名)。CPU对两者都进行了优化。
程序优化速度与内存的主要方式是将函数解压缩为内联代码,如果可以的话。函数调用很慢。
x64比Windows上的x32具有更快的调用约定。在x32中,所有参数都在堆栈上传递,这是一个比寄存器慢得多的内存区域。在x64中,它们在任何可能的情况下都会在寄存器中传递,即如果寄存器用完了,它将在堆栈上传递其余的寄存器。
https://stackoverflow.com/questions/73214816
复制相似问题