- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
如果我定义一个函数
inc = function(x) { return x + 1 }
并对其进行嵌套调用
inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(inc(1)))))))))))))))))))))
这将导致值 22
。如果我修改嵌套表达式,改为使用 call
,为 this
传入 null
,如
inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, 1)))))))))))))))))))))
这也会产生值 22
。
但是,在 JavaScriptCore 上,第二种形式似乎会消耗 O(2^n) 内存,其中 n 是嵌套调用的数量.如果我在 Firefox 或 Chrome 中尝试此 JavaScript,则情况并非如此,因此它似乎与 JavaScriptCore 隔离。
我的 JavaScript 经验很少(几乎没有)。我对各种 JavaScript 实现可能做出的权衡没有感觉,也不知道示例代码在某些实现中昂贵(为闭包等提供通用支持)而在其他实现中高效是否合理。
我的问题是:这段代码本身就存在问题吗?是否应该以不同的方式重写它的结构?还是代码没问题——JavaScriptCore 只是有一个错误?
我做了一些实验,其中重构一些对临时对象的内部调用将“chop ”内存加倍行为
var temp1 = inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, 1)))))));
var temp2 = inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, temp1)))))));
inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, inc.call(null, temp2)))))));
最佳答案
根据对这个问题的评论,一致认为所编写的代码没有根本问题,而是 JavaScriptCore 中的一个错误。
对于ticket filed ,已确认可重现,已导入苹果的Radar系统。
关于JavaScriptCore 嵌套 "call"性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27568249/
所以我想了解 JavascriptCore 的工作原理。 所以首先我尝试调用单个函数,但现在我尝试调用类中的函数。 我的 javascript 代码是这样的 var sayHelloAlfred =
我正在尝试从 swift 类的单例实例中调用方法。 这是我的协议(protocol): @objc public protocol MyProtocol: JSExport { var nam
我正在考虑在应用程序中嵌入 JavaScriptCore。我很好奇它的便携性如何?理想情况下,我希望它能够在 Linux、Windows 和 OSX 以及 Android 和 iOS 上运行。自然 O
我正在尝试使用 iOS 应用程序连接到 Node.JS 服务器,但我没有使用第 3 方 native 库,而是尝试将其与 JavaScript Socket.IO 客户端连接并传递数据我正在接收我的
我有一个使用 JavaScriptCore 的 UIWebView。我正在尝试从网页调用 ObjC 函数。但是,该函数需要异步调用,因此我传入了一个在调用异步 ObjC 函数时调用的回调函数。 我的理
考虑以下带有 NSObject * 属性的 JSExported objective-c 类: @protocol MyObjectExport @property (nonatomic, stro
我在使用 JavaScriptCore 时遇到了一些奇怪的问题。每当我向我的类添加一个带有参数的方法时,它似乎都没有被导出(或者以一个奇怪的名称导出)。例如: import Cocoa import
我整理了一个非常简单的程序,它使用 JavaScriptCore 来评估 JS: #import #import int main(int argc, const char * argv[]) {
我想在 JavascriptCore 上下文中定义一个函数,该函数采用可变数量的参数。 类似这样的事情: JSVirtualMachine* virtualMachine = [[JSVirtualM
我在 React Native 中遇到了一个复杂的竞争条件问题。在编译时发出警告是否会显着影响 javascript 包的初始化时间? javascript 包是一个 130,000 行的文件,我怀疑
JavaScriptCore 框架如何将 JavaScript 对象转换为 Objective-C 对象,反之亦然?桥接器是否使用相同的二进制协议(protocol)来对两种目标语言进行通信? 最佳答
JavaScriptCore 框架如何将 JavaScript 对象转换为 Objective-C 对象,反之亦然?桥接器是否使用相同的二进制协议(protocol)来对两种目标语言进行通信? 最佳答
我在我们的应用程序上添加了一个 webview 实例。但是,有时会发生崩溃。 调用堆栈上的崩溃称为 JavaScriptCore WTFCrash。 Crashed: com.apple.main-t
在终端上运行 jsc 命令时,我可以访问函数 print()。它只是记录到标准输出。 我正在构建一个框架,以使 JS 库可以用 C 语言使用,当我的 JS 源尝试调用 print() 时,会引发异常。
JSC seems like the simpler-and-easier ,更便携,和准通用安装 - 世界上 node.js 的明显替代品......我已经能够弄清楚基础知识,但几乎没有关于它的东西
我有一个由 javascript 使用 JavascriptCore 调用的函数。现在,在该函数内,我必须在特定条件下再次评估 javascript。这应该调用相同的函数。 let My_JS_Fun
我正在尝试为 iOS 使用 JavascriptCore 框架,但我遇到了问题。 我的简单 javascript 文本: NSString * jsCode = @"var log = require
我正在开发一个 js 库,它也应该可以被 react-native 项目使用。 react-native 使用的 javascript 引擎是 JavaScriptCore,它与浏览器中使用的 nod
https://github.com/gg2001/monero/blob/master/monero/NewWallet.js 我有一个相当大的 6000 行 js 文件,JavaScript 核心
我正在尝试使用 JavaScriptCore C API 开发一个简单的 cli 工具示例(在我的 linux 机器上使用,或者如果不可能在 mac osx 上使用它)。参数是 JavaScript
我是一名优秀的程序员,十分优秀!