对几种获取字符串长度的方法进行性能比较

测试环境:

操作系统:CentOS release 6.8 (Final)

操作环境:vi编辑器

任务:对获取字符串长度的几种统计方法的性能比较。

测试数据如下:

1.变量自带的获取长度的方法

[[email protected] scripts]# time for n in {1..10000};do char=`seq -s "skyboy" 100`;echo ${#char} &>/dev/null;done

real    0m19.712s

user    0m5.271s

sys     0m10.414s

------------------------

real    0m18.697s

user    0m5.278s

sys     0m10.369s

2.利用expr自带的length方法

[[email protected] scripts]# time for n in {1..10000};do char=`seq -s "skyboy" 100`;expr length  ${char} &>/dev/null;done

real    0m36.181s

user    0m8.434s

sys     0m19.887s

--------------------------

real    0m36.677s

user    0m8.509s

sys     0m19.936s

3.利用管道加wc的方法

[[email protected] scripts]# time for n in {1..10000};do char=`seq -s "skyboy" 100`;echo ${char}|wc -L &>/dev/null;done

real    0m48.669s

user    0m15.029s

sys     0m40.589s

--------------------------

real    0m48.935s

user    0m15.125s

sys     0m40.630s

4.利用awk自带的length函数方法

[[email protected] scripts]# time for n in {1..10000};do char=`seq -s "skyboy" 100`;echo $char|awk ‘{print length($0)}‘ &>/dev/null;done

real    0m54.038s

user    0m15.225s

sys     0m42.295s

--------------------------

real    0m53.177s

user    0m15.277s

sys     0m42.291s

   小结,经过两轮测试获得数据比较,第一种方式是用时最少,效率最高;第四种方式用时最多,效率最低。在Shell编程中,考虑效率最高的方式或是易用的程度去选择。

时间: 2024-10-24 18:18:53

对几种获取字符串长度的方法进行性能比较的相关文章

linux shell脚本编程笔记(四): 获取字符串长度的七种方法

获取字符串长度的七种方法 1. \${#str} 2.awk的length 备注:1) 最好用{}来放置变量2) 也可以用length($0)来统计文件中每行的长度 3.awk的NF 备注: -F为分隔符,NF为域的个数,即单行字符串的长度 4.wc的-L 备注: -L参数1) 对多行文件来说,表示打印最长行的长度! 82,表示/etc/passwd文件最长行的长度为822) 对单行字符串而言,表示当前行字符串的长度! 5.wc -c 备注: 1) -c参数: 统计字符的个数2) -n参数: 去

shell获取字符串长度

方法1: 使用wc -L命令 wc -L可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取,另外wc -l则是获取当前字符串内容的行数. 代码如下: echo "abc" |wc -L 方法2: expr length string 使用expr length可以获取string的长度 方法3: awk获取域的个数,但是如果大于10个字符的长度时是否存在问题需要后面确认 代码如下: echo "abc" |awk -F ""

获取JSON长度的方法

一.JSON获取代码: function getJsonLength(jsonData){     //获取JSON长度的方法     var jsonLength = 1;     for(var item in jsonData){         jsonLength++;     }     return jsonLength; } 二.调试: //console.log(getJsonLength(content)); for(var i=1;i<getJsonLength(conte

oracle获取字符串长度函数length()和hengthb()

原文:oracle获取字符串长度函数length()和hengthb() lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 length(string)计算string所占的字符长度:返回字符串的长度,单位是字符 对于单字节字符,LENGTHB和LENGTH是一样的. 如可以用length(‘string’)=lengthb(‘string’)判断字符串是否含有中文. 注: 一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为

DOS命令(cmd)批处理:替换字符串、截取字符串、扩充字符串、获取字符串长度

1.替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串.举例说明其功能:========================================= @echo off set aa=伟大的中国!我为你自豪! echo 替换前:%aa% echo 替换后:%aa:中国=中华人民共和国% echo aa = %aa% set "aa=%aa:中国=中华人民共和国%" echo aa = %aa% pause ==============================

关于判断字符串长度的方法

关于判断字符串长度的方法 在一个中英文混合的字符串中,怎么判断它的长度,按英文占一个字节,汉字两个字节的标准比如“你好ni”,长度就是6        “abcd” 长度是4有什么好办法吗,介绍一下,谢谢 -(NSUInteger) unicodeLengthOfString: (NSString *) text {    NSUInteger asciiLength = 0; for (NSUInteger i = 0; i < text.length; i++) { unichar uc =

获取字符串长度【把双字节的替换成两个单字节的然后再获得长度

/** * 获取字符串长度[把双字节的替换成两个单字节的然后再获得长度] * @param str * @returns */ function getBlen(str) { if (str == null) return 0; if (typeof str != "string"){ str += ""; } return str.replace(/[^\x00-\xff]/g,"01").length; }

php截取中文字符串,英文字符串,中英文字符串长度的方法

今天学习了php函数截取中文字符串,英文字符串,中英文字符串的函数使用方法.对中英文截取方法不理解,此处先做记录. PHP自带的函数如strlen().mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节.例: $enStr = ‘Hello,China!’;echo strlen($enStr); // 输出:12 而中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8.utf-8能兼容更多的字符,所以受到很多站长的喜爱.gbk与u

获取字符串长度、字符长度、字节长度

度量快速开发平台中基础函数中有一个  len  的获取字符长度函数.具体用法是:len ("123Abc字符串") 这个方法得到的结果是:9 即一共有多少个字符,没有区分单字节与双字节的情况. 如果某一个字段设置的长度为9,那刚才这个字符串保存到数据库的时候,会提示字符串过长,因为数据库中一般是按照字节长度来判断的. 度量快速开发平台中,是没有直接提供这个获取字符串字节长度得函数.用户想知道这个字符串占用了多少字节,在平台中如何来得到呢? 我们知道,度量快速开发平台是与c#完美结合使用