pine-script - 布尔表达式评估和性能
问题描述
我认为 Pine Script 评估布尔表达式的方式存在缺陷,这会极大地影响性能。
看这个例子
//@version=4
study("PlayGround", overlay=true)
var int y = 0
f1() =>
label.new(bar_index, high)
true
if false and f1()
y := y + 1
plot(y, title="y")
该语句if false and f1()
不应该需要评估函数的结果f1()
才能知道结果总是false
.
然而 - 正如在图表上绘制标签的事实所证明的那样 - 该函数f1()
仍然在每个柱上执行。
所以 Pine Script 似乎在做出决定之前评估了整个表达式,这是不必要的。
不知道这是否是设计使然,但我认为这应该得到纠正。
上下文信息
我有一个脚本,其中包含大量连续的 if 语句来检查当前柱是否在某个日期。
为了提高性能,我添加了一个布尔变量,首先在每个if
语句上进行评估。
(可以在Plotting custom data - daily = ok, week = not okf_prediction_daily()
中的函数中看到一个示例)
但是随着我的语句列表越来越大,我注意到性能下降了。
因此,我创建了这个小测试和问题。if
解决方案
正确的。布尔表达式的求值目前在 Pine 中没有短路,因此表达式中的所有元素都被求值。
推荐阅读
- javascript - 多次调用graphql突变后保持多个加载状态
- swift - 共享扩展将选定的文本传递给 textview
- azure - 如何获取流音频转换结果的开始时间和结束时间?
- python - PIP install rasa-x 不工作并且 pip 降级
- node.js - Discord JS 欢迎消息画布问题
- c# - AssetManager.Open 不支持 Stream.Seek?
- javascript - 打字稿:TS2739:缺少属性
- php - 是否可以在 PHP 中修改核心类?
- python - Spyder 历史日志只能返回一天?
- javascript - 如何在异步函数之外获取一系列链接?