首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google :识别代码的性能/执行速度瓶颈部分

Google :识别代码的性能/执行速度瓶颈部分
EN

Stack Overflow用户
提问于 2021-02-07 09:14:21
回答 1查看 155关注 0票数 2

Google :识别代码的性能/执行速度瓶颈部分。在技术方面,已经有人在这方面取得了普遍的成功?你能分享你的例子吗?

下面是我从Google ClassRoom输出HTML网页的小脚本。我现在对这些技术一无所知,但我想在学习上取得进步。

此脚本要输出的表行最多为100-150行。无法理解为什么脚本运行超过5-8分钟来完成它的工作&最终输出100-150行HTML表。

也许我用错了数组什么的?或者是谷歌应用程序脚本的本质是缓慢运行的整体?

代码语言:javascript
复制
function doGet() {
  var res = listCoursesHTML();
  var html = HtmlService.createHtmlOutput();
  html.append("<table border = \"1\">");
  html.append("<tr><th>Имя преподавателя</th><th>Почта</th><th>Название курса</th><th>Название ОП (Учебная группа)</th></tr>");
  for(result in res)
  {
    html.append("<tr><td>"+res[result].Name +"</td><td>"+res[result].email +"</td><td>"+res[result].courseName +"</td><td>" +res[result].courseDescription+"</td></tr>");
  }
  html.append("</table>");
  //return HtmlService.createHtmlOutput(out[0]);
  return html;
}

function listCoursesHTML() {
  var courses = [];
  var ownerId = [];
  var pageToken = null;
  var optionalArgs = {
    pageToken: pageToken,
    pageSize: 9999
  };
  var results = [];

  while (true) {
    var response = Classroom.Courses.list(optionalArgs);
    // @ts-ignore
    var courses = response.courses;
    if (!pageToken) {
       break;
    }
  }
  if (courses.length === 0) {
    Logger.log("No courses found.");
  } else {
    Logger.log("Courses:");
    // @ts-ignore
    for (course in courses) {
      // @ts-ignore
      results.push({
        "Name": getName(courses[course].ownerId),
        "email": getEmail(courses[course].ownerId),
        "courseName": courses[course].name,
        "courseDescription": courses[course].description
        });
    }
  }
  return results;
}

function getEmail(id) {
  return Classroom.UserProfiles.get(id).emailAddress;
}

function getName(id) {
  return Classroom.UserProfiles.get(id).name.fullName;

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-08 10:08:23

应用程序脚本为最佳实践提供了一个很好的指南,以保持代码的整洁,特别是为了保持代码的效率。

  • 一个可能与您的案例场景相关的方法是使用批处理操作,而不是一个接一个地设置元素。
  • 此外,在使用潜在的无限循环(while(True))时,请非常小心,并尝试将其替换为if if(pageToken)或时间(取决于变量while(pageToken) )。
  • 正如@Cooper所提到的,不建议使用为…来迭代数组,因为它的设计目的是迭代对象的属性,因此当将它与数组一起使用时,它的性能可能会降低。正如在这篇文献中所描述的,最好对数组使用简单的for循环或forEach循环。
  • 最后,我建议您进一步阅读,并在追加innerHtmlhtml()之间进行性能测试,因为根据案例场景的不同,这三种测试在性能方面可能都会更好。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66086251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档