文档章节

PHP7 vs Python的二分查找性能小测试(俺想说Python的性能真是一坨X)

DavinciRes
 DavinciRes
发布于 2016/01/30 01:09
字数 227
阅读 332
收藏 7

先贴测试结果

[root@fbsd /tmp]# time php ./search_value.php 
real    0m1.869s
user    0m1.770s
sys    0m0.095s
[root@fbsd /tmp]# time python ./search_value.py

real    0m10.096s
user    0m9.578s
sys    0m0.158s

上述Python是python2,如果用python3执行,花的时间更多,只能呵呵了。

PHP7(版本为7.0.2)的代码

#!/usr/bin/env php
<?php
function binsearch($data , $key)
{
    $low = 0;
    $high = count($data);
    $found = -1;
    while($low < $high) {
        $mid = ($low + $high) / 2;
        if($key == $data[$mid]) {
            $found = $mid;
            break;
        }  else 
            if($key < $data[$mid]) 
                $high = $mid;
            else
                $low = $mid + 1;
    }
    return $found;
}

$mydata = array();
$max_value = 1000000;
for($i=0;$i< $max_value;$i++){
    $mydata[$i] = $i;
}

foreach($mydata as $i) {
    binsearch($mydata, $i);
}
?>

Python版(版本为2.7.10)的代码

def binsearch(data,key):
    low = 0
    high = len(data)
    i = 0
    found = -1
    while low < high:
        mid = (low+high) / 2
        if key == data[int(mid)]:
            found = int(mid)
            break
        else:
            if key < data[int(mid)]:
                high = mid
            else:
                low = mid + 1
    return found

a = []
max_value=1000000
for n in range(0,max_value):
    a.append(n)

n = 0
for n in a:
    binsearch(a,n)

© 著作权归作者所有

共有 人打赏支持
DavinciRes
粉丝 6
博文 11
码字总数 7030
作品 0
朝阳
系统管理员
私信 提问
加载中

评论(2)

zouqilin
zouqilin
python不是这么用的10
不坏
不坏
没有什么意义
python 二分插入、遍历目录

这两道题是之前面试测试开发遇到的,今天分享给大家。 遍历文件 python 遍历文件夹下所有文件,并打印出所有文件名 二分法 python 在顺序列表中,二分法查找且插入一个数

lvyz0207
2018/05/24
0
0
Python数据结构总结篇

数据结构篇主要是阅读[Problem Solving with Python]( http://interactivepython.org/courselib/static/pythonds/index.html)时写下的阅读记录,当然,也结合了部分[算法导论]( http://en.wi...

宅男潇涧
2014/07/06
584
0
69. Sqrt(x) - LeetCode

Question 69. Sqrt(x) Solution 题目大意: 求一个数的平方根 思路: 二分查找 Python实现:

yysue
2018/10/01
0
0
python模块介绍- bisect-有序列表

python模块介绍- bisect 2013-03-21 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.com qq 37391319 博客:http://blog.csdn.net/oychw #版权所有,转载刊登请来函联系 # 深...

长平狐
2013/12/25
133
0
python实现lower_bound和upper_bound

由于对于二分法一直都不是很熟悉,这里就用C++中的lowerbound和upperbound练练手。这里用python实现 lowerbound和upperbound本质上用的就是二分法,lowerbound查找有序数组的第一个小于等于目...

mambakb
2018/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
8
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
3
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部