2015-02-06 55 views
0

我已经从Eclipse项目导出代码到jar文件。当我在另一个标准的java项目中访问这个jar文件时,需要5分钟才能完成。在Google App Engine上的一个servlet上,完成需要将近一个小时。这只是使用Google App Engine的一项功能,还是可能存在其他问题?我正在使用带有cron作业的servlet来更新数据存储,但写入数据存储所用的时间只是总运行时间的一小部分。谷歌应用程序引擎,导入的jar运行速度非常慢

更新

的代码关联标注了大量新闻稿件的公司名称和那里文章,用朴素贝叶斯分类器。这就是计划需要的时间长度,但不是为什么它需要更多的App Engine。

+0

你需要来分析它,看看发生了什么。即使是5分钟也是Java代码执行的很长时间 - 它必须等待某个东西或运行很多循环。 – 2015-02-06 15:54:44

+0

@AndreiVolgin更新了问题 – user2644013 2015-02-06 15:59:46

回答

1

没有看到它就很难优化程序,但这里有几点提示。

如果不受限制,App Engine上的代码可以像任何地方一样快速地执行。您应该查看数据访问时间(读取文章的速度),数据写入时间和/或内存限制。像你描述的应用程序往往需要大量的内存。

  1. 您可以检查App Engine控制台上的内存统计信息。如果碰到限制,可以使用更大的实例,或将处理负载分成更小的块。

  2. 如果将负载分解为单个任务并使用任务队列,则可以利用单个实例上运行的多个线程。涉及读/写数据时,这通常会提高性能。

  3. 确保在读取/写入数据时使用正确的块大小。例如,数据存储区中的查询默认块大小为10,而您可以将其增加到1,000。同样的逻辑适用于数据存储。当您读/写数千个实体时,它会使性能发生巨大差异。这也适用于其他存储选项。

作为用于比较数据点,我能够从因特网上的抓取(这是比从存储慢得多)和每小时处理数百万个文档(提取物,清洁,索引等)一个常规的App Engine实例。