本文主要是介绍少走弯路:esp32(esp8266)中查询子字符位置的性能改进,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在极致化个人开源项目
GitHub - StarCompute/tftziku: 这是一个通过单片机在各种屏幕上显示中文的解决方案
的性能过程中 发觉:在esp8266中 对于一个String中查找某个child string的方法一般是使用indexof这个方法,如下:
String strAll="afjkldsfjldsjfldsjfdsjfdshfdsfksjfkldsjf我的看法家里舒服的";
String strChild="看法";int pos=strAll.indexOf(strChild);
这个pos就是字符串的位置。
这个方法一般使用起来没有问题,对于习惯使用String对象的朋友来说更简单;但是,这个方法的效率极低,当你的字符串本身的内容较多的时候,和以下的方法比起来性能是10倍以上:
const char* chrAll=strAll.c_str();
char * chrFind=strstr(chrAll,strChild.c_str());
int pos =chrFind-strAll.c_str();
在esp8266中,第一种方法对于较大的字符串可能需要0.xxx秒,而后一种方法只需要0.0xx秒,在单片机这种需要性能最优的情况下建议使用后一种方法。
一个非常奇怪的疑问就是为啥String 的indexOf方法性能这么低呢。
这篇关于少走弯路:esp32(esp8266)中查询子字符位置的性能改进的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!