我正在写一个可能有1000个数据点的文件。我有所有这些课程,目前正在编写所有数据(数据点是以1s为间隔)。我目前正在做的是在下面写的,而且它很慢。我是否会更好地改变我将字符串/字节写入文件的方式?或者,当应用程序运行时,我会更好地将此信息写入某个文件指针吗?
顺便说一句,所有诸如getAccuracy()
之类的内容都是浮点数/整数(所以它也必须转换它们)。
fileStr = "";
fileStr += "timestamp,Accuracy,Altitude,Latitude,Longitude,GPSSatelliteEntries\r\n";
for (Iterator<Entry> i = entries.iterator(); i.hasNext(); ) {
Entry item = i.next();
long ts = item.getTs();
DataEntry d = item.getD();
List<GPSSatelliteEntry> satellites = item.getG();
// write stuff
fileStr += ts + ",";
fileStr += d.getAccuracy() + "," + d.getAltitude() + "," + d.getLatittude() + "," + d.getLongitude() + ",";
fileStr += "[";
boolean entered = false;
for (Iterator<GPSSatelliteEntry> j = satellites.iterator(); j.hasNext(); ) {
GPSSatelliteEntry item2 = j.next();
entered = true;
fileStr += "(" + item2.getAzimuth() + "," + item2.getElevation() + "," + item2.getPrn() + "," + item2.getSnr() + "),";
}
// chop off extra ,
if (entered)
fileStr = fileStr.substring(0, fileStr.length() - 1);
fileStr += "]";
fileStr += "\r\n";
}
答案 0 :(得分:4)
每当您努力使用字符串时,请使用StringBuilder
或StringBuffer
来获得更好的效果。
不要忘记String
是immutable,每次修改String
时,都会创建新实例并且会降低性能。
答案 1 :(得分:0)
答案 2 :(得分:0)
StringBuilder stuff = new StringBuilder();
stuff.append("PUT YOUR STRINGS HERE");
stuff.append("PUT YOUR STRINGS HERE");
然后你可以使用'stuff'打印字符串。 把它放在一个循环中并使用计时器迭代大量数据以查看优点,这非常有趣。