Google Apps Script Rhino 与 V8 性能对比(343 毫秒对比 45,042 毫秒)

Google Apps Script Rhino vs V8 Performance (343ms v 45,042ms)

我创建了一个 google 应用程序脚本,部署为网络应用程序,执行为“user_deploying”,可由“anyone_anonymos”访问。使用 Rhino 执行此操作需要 343 毫秒,使用 V8 执行此操作需要 45,042 毫秒,根据以下代码中的标记计算。为什么会有差异?我如何才能提高 V8 的性能,特别是 Mark II?

平均执行时间(以毫秒为单位)(rhino/V8):

代码:

// GET SCENARIO LIST
function getScenarioQuickList() {

  var start = new Date().getTime();

  var conn = Jdbc.getCloudSqlConnection('jdbc:google:mysql://...', user, userPwd);

  var query = 'SELECT a.`lvl`, a.`pubShort`, a.`scenTitle`, a.`pdfLink`';
    query += 'FROM `SA` a WHERE a.`scenId` <> "ZZZ99998" AND a.`scenId` <> "ZZZ99999" ORDER BY a.`scenId`;';
      
  var stmt = conn.prepareStatement(query);
  
  var results = stmt.executeQuery();
  
  var scenList = [];

  console.log(new Date().getTime()-start);  // mark 1
  
  // Push results to array

  start = new Date().getTime();

  while (results.next()) {
    scenList.push({
      'lvl': results.getString(1),
      'pubShort': results.getString(2),
      'scenTitle': results.getString(3),
      'pdfLink': results.getString(4),
    }); // close push
  } // close while
  
  console.log(new Date().getTime()-start); // mark 2

  start = new Date().getTime();

  results.close();
  stmt.close();
  conn.close();
  
  console.log(new Date().getTime()-start); // mark 3

  return scenList;

}

这可能是一个错误:

我已经能够为对应于 JdbcResultSet 的方法重现此行为,尤其是在遍历适当大小的结果时。在许多情况下,V8 中的执行时间比 Rhino 中的执行时间要长得多。

有趣的是,这似乎是间歇性的,因为有时性能相似。

在问题跟踪器中报告:

考虑到所有这些因素,我已经在 Issue Tracker 中报告了此行为:

受此影响的任何人,请考虑 subscribing to this issue by starring it 以跟踪此事并帮助确定优先级。