在《接口自动化测试框架-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算法性能优化的更多相关文章

  1. 49.ardinality算法之优化内存开销以及HLL算法

    主要知识点 precision_threshold参数的理解 HLL算法优化(hash)         cardinality,count(distinct),5%的错误率,性能在100ms左右   ...

  2. 03.SQLServer性能优化之---存储优化系列

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概  述:http://www.cnblogs.com/dunitian/p/60413 ...

  3. Web性能优化:图片优化

    程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...

  4. C++ 应用程序性能优化

    C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...

  5. MIS性能优化常见问题与方案(辅助项目组性能优化的总结贴)

    最近帮忙公司的几个项目组进行了不同方面的性能优化,发现几个项目都出现了一些共性的问题.这里写一篇文章,总结一下这几类问题,以及其对应的解决方案.方便其它项目组参考.   常见问题一:打开页面非常慢,有 ...

  6. MySQL性能优化总结

    一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎 ...

  7. Java内存模型及性能优化

    最近在做一个项目的性能优化,遇到好多以前没有关注过的性能问题,一头雾水,今天做个笔记,简单记录下JVM相关的参数设置. 一.JVM内存模型 首先介绍下Java程序具体执行的过程: Java源代码文件( ...

  8. (转) Android开发性能优化简介

    作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以 ...

  9. 数据库访问性能优化 Oracle

    特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...

随机推荐

  1. ASP.NET MVC 5 开发环境配置

    Install-Package Ninject -Version 3.2.2 -ProjectName SportsStore.WebUIInstall-Package Ninject.Web.Com ...

  2. 加速安装 Sharepoint 2013 SP1

    第一次安装把人吓了一跳,居然花了5个半小时.想想有一大堆服务器要升级,不得不想想有什么加速的办法. 试了好几种方法,以下的办法最为简单 1:停止 IIS ADMIN,WWW 服务 2:停止所有 sha ...

  3. Ubuntu 12.04常用快捷键

    ===== 桌面 ===== ALT + F1: 聚焦到桌面左侧任务导航栏,可按上下键导航. ALT + F2: 运行命令 ALT + F4: 关闭窗口 ALT + TAB: 切换程序窗口 ALT + ...

  4. PHP字符串——简单应用

    错误的学习编码语言观点:语言语法不用记,多练习就可以了.   应该是死记住,然后加强练习以免忘记.以及在练习中加强理解.试着想“为什么是这样的语法习惯”.PHP提供了8种数据类型.4种是标量型(单值) ...

  5. php功能模块学习笔记

    字符串处理: explode爆炸 implode聚爆explode()     把字符串打散为数组.语法:explode(separator,string,limit) 本函数返回由字符串组成的数组, ...

  6. ubuntu 12.04 64位 安装wps

    1.去wps官网下载linux版的软件 http://community.wps.cn/download/ 我这里下载的是Alpha版的kingsoft-office_9.1.0.4280~a12p4 ...

  7. 配置网卡绑卡 --RHEL7

    配置网卡绑卡 1)网卡绑定(team方式) # 创建组接口nmcli connection add type team ifname team0 con-name team0 config '{&qu ...

  8. 【JavaScript】JavaScript(V8)实现输入输出

    首先看牛客网的样例:https://www.nowcoder.com/questionTerminal/dae9959d6df7466d9a1f6d70d6a11417 计算a+b的和,每行包行两个整 ...

  9. virtualbox+vagrant学习-2(command cli)-17-vagrant ssh命令

    SSH 格式: vagrant ssh [options] [name|id] [-- extra ssh args] 这将SSH导入正在运行的vagrant机器,并允许你访问机器的shell. us ...

  10. Google免费GPU使用教程(Google Colab Colaboratory)

    参考: https://www.234du.com/1154.html https://mp.weixin.qq.com/s/TGTToLYSQJui94-bQC4HIQ 注册gmail时遇到手机号无 ...