问题标签 [deoptimization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
577 浏览

node.js - Javascript 去优化

我不确定这段代码有什么问题。src 是Uint8Array一个长度大于 0 的对象。

这是我在运行此命令时可以在终端中多次读取的内容node --trace_deopt --allow-natives-syntax script.js

我不确定它是如何在其中找到未定义的值的。

0 投票
1 回答
653 浏览

javascript - Chrome 的 V8 不会优化功能,因为“tagged-to-i: not a heap number”

我有一个函数应该将 X 舍入到最接近的 A 倍数。

这是 JavaScript 中的代码:

当我--trace_deopt --code_comments在 Chrome 的 V8 中执行操作时,我在日志中收到此消息:

有谁知道是什么tagged-to-i: not a heap number意思?

提前致谢!

0 投票
0 回答
128 浏览

r - 多次运行 DEoptim 的可重现结果

我正在尝试通过DEoptim以下方式在 R 中使用

但是,DEoptim在并行设置中使用不会在多次运行中重现结果。使用 .串行运行代码时,我没有这个问题parallelType = 0。我尝试在集群中设置种子clusterSetRNGStream以及在代码中使用set.seed,但这也无济于事。

有没有人在尝试DEoptim并行运行时遇到过类似的问题。下面是sessionInfo

0 投票
0 回答
676 浏览

c++ - DEOptim 不断讲述:目标函数的 NaN 值

我用 C++ 编写了一个模拟程序,并且喜欢使用 DEoptim 在 R 中查找参数。有时一切正常,有时 DEoptim 停下来告诉你:

我的 R 脚本定义了一个调用外部二进制文件的函数。参数附加到命令中。我测试了我的 C++ 程序,但从未见过 NaN 的返回。此外,为了进行调查,我检查了simulate()R 函数中的 NaN,这样它就会停止并告诉它实际上存在一个 NaN 值。然而,它永远不会止步于此——而是在 DEoptim 的后期。问题是什么?这是一个 DEoptim-Bug 吗?

编辑:我发现返回实际上不是 NaN 而是 NA。如果我替换为 ,该simulate()功能将停止。我也再次浏览了我的 c++ 程序,找不到不向. 因此我问了这个问题: main() 可以在所有 cout 都写入控制台之前返回吗?is.nan(ret)is.na(ret)cout

0 投票
1 回答
603 浏览

r - DEoptim 错误:由于 foreachArgs 规范,目标函数结果的长度与参数矩阵不同

我有一个非常奇怪的DEoptim错误,我已经“修复”了,但不明白。

当我将DEoptim' 的并行功能与parallel包(即pType=1)一起使用时,我没有遇到任何问题。但是,当我改用foreach它时(我必须在可用的网格计算设置上使用它),我遇到了问题。以下是我遇到的问题的简化版本的 MRE。pType=1有效,pType=2foreachArgs指定时返回错误:

目标函数结果的长度与参数矩阵不同

当我不指定foreachArgs时,问题就消失了。有人对这个问题的根本原因有想法吗?

0 投票
0 回答
149 浏览

r - DEoptim:如何优化多个参数?

我想拟合一条曲线,模型如下图。

在此处输入图像描述

在这个模型中,有四个参数(alpha,beta,gamma和Rd)要优化,现在I和P(I)的数据已经有了,并且使用了package in的函数DEoptim()DEoptimR是我的代码。

但R显示错误如下

DEoptim (lower, upper, fn = fn.piao, par = par, control = DE.control) 中的错误:对象不是矩阵

在论文 (KM Mullen2011) 中,它说上的第i个元素适用于第i个参数。所以我设置了向量lowerupper来代表 alpha、beta、gamma 和 Rd。我想问我的错在哪里以及如何调整?

0 投票
0 回答
128 浏览

javascript - 什么时候调用 javascript 去优化器?

我知道,如果循环中的数据类型发生变化(例如数组中的一个元素是字符串,而其余元素是 int),js 的 JIT 编译器将取消优化暖代码或热代码。

但是我很少有我无法理解代码是否会被取消优化的场景

  • 相同的循环用于两个数组,其中一个数组包含字符串和其他整数。编译器会在此处取消优化代码还是创建两个副本?(我理解应该是两份)。
  • 如果是对象数组。考虑所有情况,例如
    • 被操纵的子属性是不同的类型。
    • 每个对象都有相同的子属性,但一个对象缺少一个属性。
      • 缺少的属性不在循环内进行操作。
      • 缺少的属性在循环内进行操作(处理空情况)。
    • 所有对象都有不同的属性(添加新属性,或使用属性位置完成操作)。
0 投票
0 回答
77 浏览

r - 如何更快地进行非谎言投资组合优化

如何更快地进行非线性投资组合优化?我想根据以下指标优化 50 个资产的投资组合:(mean(portfolio returns_t-1)/sd(portfolio returns_t-1)-mean(portfolio returns_t-2)/sd(portfolio returns_t-2)。所以我想要通过选择相应的投资组合权重来尽可能高的衡量标准

目前我在 R 上使用函数 DEoptim,但是,对于 50 个资产,运行时间很长,我不知道该解决方案是全局最优还是仅局部最优。有没有一种解决方案可以更快地对这些困难的措施进行投资组合优化?更好的算法?切换到不同的编程语言?提前致谢!

0 投票
1 回答
313 浏览

r - 在 R DEoptim 中传递优化函数参数

我正在尝试学习DEoptimR 中的库,但我认为我误解了库文档

https://www.rdocumentation.org/packages/DEoptim/versions/2.2-4/topics/DEoptim

argument "returns_covar" is missing, with no default当我尝试下面的代码时出现错误

我试图优化(最小化)的功能是:

同样,最后一行的错误returns_covar是缺少参数,但我尝试将其传递给DEoptim()函数。

我认为上面有括号错误,所以我尝试了以下

这会导致以下错误:

Error in allocations %*% returns_covar %*% t(allocations) : non-conformable arguments

当我检查矩阵的维度时,一切似乎都很好

calculate_portfolio_variance()函数中添加维度检查

表明分配向量NULL在第二次迭代时变为。我不确定为什么或如何解决它。

0 投票
1 回答
241 浏览

javascript - 为宠物项目研究 Chrome 79 中的 Javascript DEOPT 原因

我一直在修补 Javascript 国际象棋引擎。是的,是的,我知道(轻笑),这不是那种事情的最佳平台。这有点像一个宠物项目,我很享受学术练习,并且对接近编译语言速度的挑战很感兴趣。Javascript 中还有其他一些古怪的挑战,比如缺少 64 位整数,这使得它不适合国际象棋,但也很有趣。

不久前,我意识到小心构造、函数参数等非常重要。在国际象棋编程中一切都很重要,但在 Chrome 中通过 Javascript 使用 JIT 编译器(V8 Turbofan)时似乎很重要。

通过一些痕迹,我看到了一些急切的 DEOPT,我无法弄清楚如何避免。

DEOPT 急切,地图错误

跟踪引用的代码:

跟踪直接指向 IF 条件的 validMoves.length 参数。validMoves 只是一个空数组 [] 或移动对象数组 [{Move},{Move},...]

空数组 [] 会启动 DEOPT 吗?

顺便说一句,我有很多懒惰和软 DEOPT,但如果我理解正确的话,这些并不是那么重要,只是 V8 在最终优化它之前如何围绕我的代码包装它的一部分;在 --trace-opt 中,具有软、惰性 DEOPT 的功能似乎最终会被 Turbofan 优化,并且从长远来看可能不会对性能造成太大影响。(就此而言,急切的 DEOPT 功能似乎最终也得到了重新优化。)这是一个正确的评估吗?

最后,我有时发现通过将显示 DEOPT 的函数分解为多个较小的函数调用,我获得了显着的性能提升。据此,我推断更大更复杂的功能难以优化,通过分解它们,较小的分隔功能正在被优化,从而为我提供了收益。这听起来合理吗?