parewise算法性能优化
在《接口自动化测试框架-AIM》这篇博客中,提到了parewise算法。
这次对其进行性能优化,共3点。
一、
因为笛卡尔积和两两拆分,是有序的。
就保证了两两拆分后的每列都是相同位置的元素。
所以在比较时,不用跨列去比较。
只需要比较同一列的值就可以了。

flag = False
for j2 in range(len(s2[i2])):
if s[i][j] == s2[i2][j2] and j == j2:
t = t + 1
flag = True
break
if flag:
break
简化为
if s[i][j] == s2[i2][j]:
t = t + 1
break
笛卡尔积2187条,优化前60s,优化后45s。
二、
如果某一列没有出现重复的元素,那就不用继续找后面的列了。
说明这一行用例是需要保留的。

for j in range(len(s[i])): # 对每行用例的两两拆分进行判断,是否出现在其他行
flag = False
for i2 in [x for x in range(len(s2)) if s2[x] != s[i]]: # 找同一列
if s[i][j] == s2[i2][j]:
t = t + 1
flag = True
break
if not flag: # 同一列没找到,不用找剩余列了
break
笛卡尔积2187条,优化前45s,优化后40s。
三、
优化到这里,逐段代码研究,发现没多少优化余地了。
最外层的for循环是笛卡尔积2187次。
每次循环平均0.02s。
40.85s是2187次累加起来的。
无可奈何。
只能优化用户体验了,哈哈哈。
加了个进度条。

过程也有些曲折。
1.
按网上例子print \r end=
c = int(i / 10) jd = '\r %2d%% [%s%s]' a = '■' * c b = '□' * (10 - c) print(jd % (i, a, b), end='')
单独的py文件跑没问题,pycharm用unittest跑显示不出来。
2.
那就百度,换sys.stdout.write
c = int(i / 10) jd = '\r %2d%% [%s%s]' a = '■' * c b = '□' * (10 - c) sys.stdout.write(jd % (i, a, b)) sys.stdout.flush()
成功显示了。但是在用HTMLTestRunner跑的时候,又显示不出来进度条了!
3.
再百度,无果。
看源码,发现是输出重定向了。

联想到log日志是能打印控制台的。
于是“偷奸耍滑”,在Log里面复用了一下。

搞定。
parewise算法性能优化的更多相关文章
- 49.ardinality算法之优化内存开销以及HLL算法
主要知识点 precision_threshold参数的理解 HLL算法优化(hash) cardinality,count(distinct),5%的错误率,性能在100ms左右 ...
- 03.SQLServer性能优化之---存储优化系列
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概 述:http://www.cnblogs.com/dunitian/p/60413 ...
- Web性能优化:图片优化
程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...
- C++ 应用程序性能优化
C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...
- MIS性能优化常见问题与方案(辅助项目组性能优化的总结贴)
最近帮忙公司的几个项目组进行了不同方面的性能优化,发现几个项目都出现了一些共性的问题.这里写一篇文章,总结一下这几类问题,以及其对应的解决方案.方便其它项目组参考. 常见问题一:打开页面非常慢,有 ...
- MySQL性能优化总结
一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎 ...
- Java内存模型及性能优化
最近在做一个项目的性能优化,遇到好多以前没有关注过的性能问题,一头雾水,今天做个笔记,简单记录下JVM相关的参数设置. 一.JVM内存模型 首先介绍下Java程序具体执行的过程: Java源代码文件( ...
- (转) Android开发性能优化简介
作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以 ...
- 数据库访问性能优化 Oracle
特别说明: 1. 本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2. 本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...
随机推荐
- ZT 链表逆序
链表逆序 原帖地址http://blog.csdn.net/niuer09/article/details/5961004 分类: C/C++2010-10-23 17:23 18425人阅读 评论( ...
- Java 输入输出流总结
1. 运用BufferedInputStream 读取文件流和BufferedOutputStream写文件流: protected static void writeFile2(String inp ...
- quartz(转)
1. CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 ...
- mysql大数据量使用limit分页,随着页码的增大,查询效率越低下
1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from product limit start, count当起始页较小时,查询没有性能问题 ...
- 项目--解决MySQL数据库插入中文乱码
转载自:http://blog.csdn.net/zzh920625/article/details/51226312 情景再现] 如图,在项目中使用MySQL数据库,在做插入操作时,写入英文字符没有 ...
- centos 6.8安装java环境
1.rpm -qa |grep java 查看当前是否有java已经安装了,部分centos系统已经安装了的openjava环境,但是很多项目不熟要求的是要必须是sun的java环境 2.yum ...
- [NOI2001]炮兵阵地 【状压DP】
#\(\color{red}{\mathcal{Description}}\) \(Link\) 司令部的将军们打算在\(N \times M\)的网格地图上部署他们的炮兵部队.一个\(N \time ...
- 郑重推荐开源CANopen协议栈CANFestival(LGPL许可)!!!!!!!!
郑重推荐开源CANopen协议栈CANFestival(LGPL许可)!!!!!!!!(这条文章已经被阅读了 次) 时间:2010/03/04 06:47am 来源:winshton [这个贴子最后由 ...
- 【VCS】种草VSCode
VSCode官网 特点:更轻量.集成Git.快速diff:文件目录管理,自定义配置,插件库 种草推文 下载地址 下载安装VSCode之后按照种草推文指南 配置VSC的扩展开发(有个前提:注册了Micr ...
- Linux学习笔记(第零章)
计算机概论 1.计算机组件 2.电脑容量 3.基础知识