python和bash对比_一个小程序的python和bash版本比较

最近有一个小需求:在一个目录下有很多文件,每个文件的第一行是BEGIN开头的,最后一行是END开头的,中间每一行有多列,数量不等,第一列称为"DN", 第二列称为"CV",DN和CV的联合作为主键,现在需要检测文件中是否有重复的DN-CV。

于是写了个简单的python程序#! /usr/bin/python

import os

import sys

cmd = "cat /home/zhangj/hosts/* | grep -v BEGIN | grep -v END"

def check_dc_line():

has_duplicate = False

dc_set = set()

for dc_line in os.popen(cmd, 'r').readlines():

dc_token = dc_line.split()

dn = dc_token[0]

cv = dc_token[1]

dc = dn + "," + cv

if dc in dc_set:

print "duplicate dc found:", dc

has_duplicate = True

else:

dc_set.add(dc)

return has_duplicate

if not check_dc_line():

print "no duplicate dc"

对于250个文件,共60万行的数据,过滤一遍约1.67秒

有点不甘心这个效率,于是又写了一个同样功能的shell脚本#! /bin/bash

cat /home/zhangj/hosts/* | grep -v BEGIN | grep -v END | awk '

BEGIN {

has_duplicate = 0

}

{

dc = $1","$2;

if (dc in dc_set)

{

print "duplicate dc found", dc

has_duplicate = 1

}

else {

dc_set[dc] = 1

}

}

END {

if (has_duplicate ==0)

{

print "no duplicate dc found"

}

}

'

为了进一步比较,重复了10次实验。use python (second)use bash (second)

1.741.548

1.6981.423

1.6741.408

1.7181.286

1.7571.292

1.6001.285

1.6471.335

1.6611.316

1.6541.288

1.6471.288

average1.6701.347

可读性上看,python更简洁优雅一些。不过执行效率略有出乎意料。shell貌似更快一些……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值