- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在看uniswapv2教程walkthrough .
以下内容引用此函数in the github repo教程说明如下:
uint _kLast = kLast; // gas savings
The kLast state variable is located in storage, so it will have avalue between different calls to the contract. Access to storage is alot more expensive than access to the volatile memory that is releasedwhen the function call to the contract ends, so we use an internalvariable to save on gas.
因此,在传统编程中,_kLast
将是对 kLast
的引用。 _kLast
在实例化后又被引用了 3 次。
kLast
作为变量,而不将其分配给 uint
,那么每次 kLast
执行时是否会花费一次存储读取用过吗?最佳答案
在交易期间,同一槽的每次存储读取(操作码 sload
)第一次花费 2,100 Gas,然后在同一交易期间每次都花费 100 Gas。 (在柏林硬 fork 中实现EIP-2929之后。在此之前,无论执行多少次读取,每次读取都是800。)
每次内存写入(操作码mstore
)和每次内存读取(操作码mload
)都会花费3个gas。
So in traditional programming,
_kLast
would be a reference tokLast
在此特定的 Solidity 代码段中,_kLast
不是指向存储的引用。它是一个内存变量,具有从存储变量分配的值。
因此 3 次存储读取(不创建内存变量)将花费 2,300 Gas (= 2,100 + 100 + 100)。
但由于代码创建了内存变量,因此它执行一次存储读取 (2,100 Gas)、一次内存写入 (3 Gas) 和 3 次内存读取 (3 x 3 Gas) - 总计 2,112 Gas。这是一个更便宜的选择。
其他一些与 EVM 兼容的网络(例如 BSC)可能仍使用每个sload
800 的原始 Gas 计算。这会产生更大的差异 - 未优化的 2,400 气体 (3 x 800) 和优化的 812 气体 (800 + 3 + 3x3)。
关于ethereum - 在以太坊中分配给 `uint` 如何节省 "storage read"成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70571700/
我试图找出在将数据传输到设备之前将数据复制到固定内存是否有意义,因为我对输入数据的分配没有影响(它是一个库)。 std::vector idata(WORK_SIZE); int *idata_ali
model.save() 让我很困惑。 示例。我将我的 mongoose.model(mongoose.schema) 移动到单独的 model.js 文件中。当我使用这种方法创建模型时,以下问题困扰
我正在用 Java Swing 制作模拟时钟。要计算我需要的时钟指针角度: 我可以通过 System.currentTimeMillis() 获得的以毫秒为单位的 UTC 时间 时区偏移 TimeZo
编辑 我的应用程序中有声音,该声音在应用程序启动时开始播放。此外,我还有两种播放和停止声音的方法: -(void)playBgMusic { NSString *path = [[NSBundle m
所以我的应用有 1 个 Activity 和 4 个 fragment ,其中一个有 Chronometer 来显示经过了多少时间。 它工作正常,但我有一个问题,每次我移动到另一个 fragment
我是 FireDAC 新手,遇到问题。我想在Delphi XE7中使用FireDAC读写SQLite数据库。我尝试的大部分方法都有效,但我在将 TTime 保存到 SQLite DB 时遇到问题。 这
这是我使用基本 Node.js 服务器创建的示例站点。我能够成功发布、创建给定架构的用户,然后“保存”到数据库;但是,保存不会返回用户对象,并且在我的实际数据库中找不到。连接也返回成功。 main.j
我有一台配备 2 Gb Nvidia GPU 的 Mac Book Pro。我正在尝试利用我所有的 GPU 内存进行计算(python 代码)。如果我绕过 GUI 界面并仅通过命令行访问我的机器,我可
我希望使用 Powerpoint 创建一种测验,我想保存用户提供的输入。 例如:如果我问这个问题:你最喜欢什么颜色?当他们回答问题并单击下一步按钮时,我想保存文本框的值并将其附加到输出文件中。 我已经
我是一名优秀的程序员,十分优秀!