在我的应用开发中,出现了一个性能问题:我有许多数据行,看起来像这样:
- !ANG:-0.03,0.14,55.31 - !ANG:-0.03,-0.14,305.31 - !ANG:-234.03,-0.14,55.31 - 一般情况下:!ANG:float,float,float
在这些行之间也有“损坏”的行——它们不以感叹号开头或太短/有额外的符号等。
为了检测到开头损坏的行,我简单地使用
我可以检测末尾是否损坏的行,但需要注意的是,我不仅需要检查行是否正确,还需要获取这些3个浮点数以便后续使用。我找到了三种方法:
- 使用正则表达式 - 分两次拆分(先用“:”再用“,”),并计算元素数 - 使用Scanner类
我不确定哪种方法(或可能还有其他方法)从性能角度来看最好。你能给我一些建议吗?
编辑:根据一些评论,我发现值得说明损坏的行如何看:
- NG:-0.03,0.14,55.31 - .14,55.31 - !ANG:-0.03,0.14, - !A,-0.02,-0.14,554,-0.12,55
关于行数很难说,因为我从其他设备的读数中获得它们,所以每次以50Hz的频率获得大约20行数据包。到目前为止,我发现使用Scanner的一个很大的缺陷是,对于每行,我需要创建新对象,而过一段时间后,我的设备开始资源不足。
- !ANG:-0.03,0.14,55.31 - !ANG:-0.03,-0.14,305.31 - !ANG:-234.03,-0.14,55.31 - 一般情况下:!ANG:float,float,float
在这些行之间也有“损坏”的行——它们不以感叹号开头或太短/有额外的符号等。
为了检测到开头损坏的行,我简单地使用
if(myString.charAt(0) != '!')//wrong string
我可以检测末尾是否损坏的行,但需要注意的是,我不仅需要检查行是否正确,还需要获取这些3个浮点数以便后续使用。我找到了三种方法:
- 使用正则表达式 - 分两次拆分(先用“:”再用“,”),并计算元素数 - 使用Scanner类
我不确定哪种方法(或可能还有其他方法)从性能角度来看最好。你能给我一些建议吗?
编辑:根据一些评论,我发现值得说明损坏的行如何看:
- NG:-0.03,0.14,55.31 - .14,55.31 - !ANG:-0.03,0.14, - !A,-0.02,-0.14,554,-0.12,55
关于行数很难说,因为我从其他设备的读数中获得它们,所以每次以50Hz的频率获得大约20行数据包。到目前为止,我发现使用Scanner的一个很大的缺陷是,对于每行,我需要创建新对象,而过一段时间后,我的设备开始资源不足。