0

我正在编写一个可能包含 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";
        }
4

3 回答 3

4

每次您在使用 Strings 时,使用StringBuilderStringBuffer以获得更好的性能。

不要忘记它String不可变的,每次修改String都会创建新实例,并且会降低性能。

于 2013-04-12T20:20:36.790 回答
0

最可能 string buffer

一个线程安全的、可变的字符序列。字符串缓冲区类似于字符串,但可以修改。

或者去string builder

于 2013-04-12T20:19:47.110 回答
0
StringBuilder stuff = new StringBuilder();
stuff.append("PUT YOUR STRINGS HERE");
stuff.append("PUT YOUR STRINGS HERE");

然后你可以使用'stuff'来打印字符串。把它放在一个循环中,用一个计时器迭代一个大数字,看看它的优势,这很有趣。

于 2013-04-12T20:22:57.977 回答