Ruby中数组的&操作
2024-08-31 05:08:31
最近在忙一个项目,好久没有写日志了,项目终于接近尾声,可以适当放松一下,所以记一下在这个项目中发现的有趣事情:
数组的 与 操作
- 一直以为两个数组A和B相与,谁前谁后都一样,不过这次在项目中突然想试一下,真是不试不知道一试吓一跳:
- 与 操作,长数组和短数组相与要比短数组和长数组相与更节省时间;
- 排序,对执行时间有影响,但不是特别明显。
- 代码:
#!/usr/bin/ruby
r = Random.new
radix = 10000000
vals1 = 10000000.times.collect {|i| r.rand(radix)}
vals2 = 100000.times.collect {|i| r.rand(radix)}
# 因为随机数,实际长度会小于10000000和100000
vals1_len = vals1.uniq.length
vals2_len = vals2.uniq.length
vals1_sort = vals1.sort
vals2_sort = vals2.sort
# 已排序未去重比较
stime = Time.now
vals1_sort & vals2_sort
etime = Time.now
puts ">>> sorted: #{vals1_len} & #{vals2_len} used #{etime - stime} s <<<"
stime = Time.now
vals2_sort & vals1_sort
etime = Time.now
puts ">>> sorted: #{vals2_len} & #{vals1_len} used #{etime - stime} s <<<"
# 未排序未去重比较
stime = Time.now
vals1 & vals2
etime = Time.now
puts ">>> unsort: #{vals1_len} & #{vals2_len} used #{etime - stime} s <<<"
stime = Time.now
vals2 & vals1
etime = Time.now
puts ">>> unsort: #{vals2_len} & #{vals1_len} used #{etime - stime} s <<<"
# 3次执行结果:
$ ./and_test.rb
>>> sorted: 6321701 & 99471 used 1.255142772 s <<<
>>> sorted: 99471 & 6321701 used 7.265526653 s <<<
>>> unsort: 6321701 & 99471 used 1.552287352 s <<<
>>> unsort: 99471 & 6321701 used 8.896545005 s <<<
$ ./and_test.rb
>>> sorted: 6320949 & 99497 used 1.280619044 s <<<
>>> sorted: 99497 & 6320949 used 7.423779834 s <<<
>>> unsort: 6320949 & 99497 used 1.660184257 s <<<
>>> unsort: 99497 & 6320949 used 9.337629195 s <<<
$ ./and_test.rb
>>> sorted: 6319943 & 99492 used 1.260916227 s <<<
>>> sorted: 99492 & 6319943 used 7.734610427 s <<<
>>> unsort: 6319943 & 99492 used 1.707935118 s <<<
>>> unsort: 99492 & 6319943 used 9.105055703 s <<<
未完,待续...
最新文章
- 【Python实战】Pandas:让你像写SQL一样做数据分析(一)
- HTML5中使用SVG
- ASP.NET编程模型之ASP.NET页面生命周期图解
- thinkphp 初始配置
- CentOS 7 之安装Mono&;MonoDevelop
- PHP查询MYSQL表的主键
- LNMP一键安装包sh脚本
- liunx环境C、C++代码编译链接中间代码主要流程
- arcgis api for js入门开发系列二十打印地图的那些事
- STM32 USB-三个HID-interface 复合(组合)设备的代码实现-基于固件库(原创)
- ecplise 正则替换技巧
- springmvc中select可以绑定enum中所有数据的方法
- Javaweb笔记—03(BS及分页的业务流程)
- 使用idea 在springboot添加本地jar包的方法
- mysql的导入导出工具mysqldump命令详解
- PostgreSQL存储过程(2)-基于PL/PgSQL的存储过程
- linux系统下top命令参数详解
- django登录功能(简单在POST请求)
- RF-template使用
- [APIO2018] Circle selection 选圆圈(假题解)