Google应用引擎,导入的jar运行速度非常慢

时间:2015-02-06 15:50:07

标签: java google-app-engine jar

我已将eclipse项目中的代码导出到jar文件中。当我在另一个标准java项目中访问此jar文件时,完成时间不到5分钟。在Google App Engine上的servlet上,需要将近一个小时才能完成。这只是使用Google App Engine的功能,还是可能还有其他问题?我正在使用带有cron作业的servlet来更新数据存储区,但写入数据存储区所花费的时间只占总运行时间的一小部分。

更新

代码使用Naive Bayes分类器为公司名称标记大量新闻文章,并与文章相关。这就是程序需要的时间长度,但不是为什么它在App Engine上需要更多的东西。

1 个答案:

答案 0 :(得分:1)

如果没有看到它就很难优化程序,但这里有一些指示。

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

  1. 您可以在App Engine控制台上查看内存统计信息。如果您遇到限制,您可以使用更大的实例,也可以将处理负载拆分为更小的块。

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

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

  4. 作为比较的数据点,我能够从Internet上获取(比从存储中慢得多)并且在常规App Engine上每小时处理数百万个文档(提取,清理,索引等)实例