我想知道如何在java中优化以下内容。我希望在Android手机上使用内存越少越好。
我得到一个包含一列的记录集,该列保存字节数组中的二进制数据。这是我从未玩过的东西。
二进制数据中的信息结构可以在这里找到:BLOB
我想跳过SRID和MBR,但我想要ENDIAN,CLASS TYPE和实际的几何数据。
在这个问题中,几何数据的实际处理并不那么重要,更多的是如何获取数据以及如何快速获取数据。
Stmt stmt = local_db.prepare("Select geometry From Parcel");
while (stmt.step()){
//stmt.column_bytes(0) holds the byte array
//this could be used with a ByteArrayInputStream or perhaps a ByteBuffer
//maybe something else, what ever would be faster??
//
//Next would be the proccessing of the byte array to get the values out.
//Switch (ENDIAN){
// case 0 :
//
// break;
// default:
//
//}
}
stmt.close();
最后,这些形状将直接放到渲染器上,所以我不需要在内存中保留任何内容。这已经超越了我自己,但可能会对你有用,看看我最终会如何使用它。
答案 0 :(得分:0)
我认为不可能预测“最快的方式”是什么。但是,这可能不应该是您成功的主要标准。
您实际需要的是应用程序,其运行速度足够。在此上下文中,应用程序性能包括执行数据库查询所花费的时间,并将结果提取到Java堆中。 (或者从文件中读取它......)
所以我建议采用以下方法:
通常,只需优化代码/实现的区域是瓶颈。虽然有例外(即真正有天赋的程序员),但大多数开发人员对真正的瓶颈所处的位置并没有特别准确的直觉。如果您知道某个特定代码区域是瓶颈,那么风险就会花费很多时间来优化它。