四则混合运算字符串,关于数值替换的问题

23次阅读

共计 577 个字符,预计需要花费 2 分钟才能阅读完成。

现在有个界面程序,用于显示数据库的某张表,表的数据从 1000W 到 1 亿之间,然后有个需求,用户选择表格一列,点击“计算器”按钮,测试界面会弹出一个计算器对话框,提供用户四则运算的能力,用户可以点击后,这个对话框输出一个 string, 类似这样

“column1 + 3 * 4″

“column2 * (5 – 2)”

然后程序会根据这个 string,把选择的列全部进行改操作

现在的策略是,用一个 for 循环,把全部数据历遍一边,把每一行的数据把 ”column1″ 给替换掉,这样就变成了

“7.45 + 3 * 4”

“1.15 + 3 * 4”

“106.4 + 3 * 4”

.
.
然后程序内置了一个 JS 执行器,把这些 string 作为 JS 脚本逐条执行,得到结果

现在的问题是,一个 5000W 级别的表,等于需要执行 JS 脚本 5000W 次,在一些机器上测试大约需要 500 秒的时间,这个时间完全无法接受
我用了另一个方法,用“0”替换掉“column1 + 3 * 4″ 中的“column1”,然后执行一次 JS 脚本,得到结果是 12,然后把该列的全部数据都 +12,这样整个过程只需要 10 秒左右就可以完成

但问题是 ”column2 * (5 – 2)” 这样的计算式,用上面这种替换方式就会得到错误的结果

现在问题是有没有比较好的办法,能够不执行 JS 脚本 5000W 次。其中计算器对话框无法更改,因为需要用户点击完成整个计算式,才能输出这个 string

正文完
 0