我需要在我的折线图上添加一条垂直线和一个文本,靠近图表上的指定点(由数据指定,而不是坐标).我尝试使用CompositeSprites,但它并没有完全显示在屏幕上.我是ExtJS绘图的新手.
所以我试图创建我自己的 JS 框架只是为了我自己的乐趣(然后可能会转换成有用的),我大部分时间都专注于动态生成 JS(因为 JS 具有更高的水平作为中间语言是个坏主意,IMO)
我遇到了一个麻烦。我试图做以下
var f = null;
var converted = "f = function(){ <do something here>";
for(var x in list)
converted+=list[x];
converted+="};";
eval(converted);
Run Code Online (Sandbox Code Playgroud)
所以这几乎将构造函数写入 f,我可以稍后执行。
但这里有一个问题 - 它运行得比我完全在文件中编写 f 的代码要慢,这很奇怪。让我解释一下为什么这对我来说很奇怪:当你每次只运行 eval 时,Chrome 预编译器(或任何浏览器预编译器 - chrome 是我的目标)无法缓存编译代码,因为它期望它会随着每个跑。
但是,当您将其保存到一个函数时,它会创建一个新的 VM 机器文件,因为在您保存该函数的代码后,您将无法更改它。那么为什么当我执行这样的 eval 时,它的运行速度比正常执行慢?我的意思是在代码执行不止一次之后。为什么这很重要?
PS:我上面展示的方法比每次 eval-ing 都快。所以我不明白为什么秒表在中间显示时间,再次忽略前 1-10 个电话
PPS:测试用例:http : //jsperf.com/evaluate-function-vs-real-function/2