1.Linux å¦ä½è¿è¡benchmark循ç¯è·
2.体系结构 - SPEC2017 benchmark调研
3.pythonåpython3çåºå«
4.Go的执行原理以及Go的命令
5.BenchmarkSQL 对 MySQL 测试时请注意隔离级别!
Linux å¦ä½è¿è¡benchmark循ç¯è·
Linux å¦ä½è¿è¡benchmark循ç¯è·å¦ä¸
benchmarkä¸å å«äºè·benchmarkçæºç benchncnn.cppï¼æå ´è¶£çå¯ä»¥å çä¸ä¸éé¢çå 容ãå¨Linuxçæä»¶æ ¹ç®å½ä¸ï¼æ°å»ºä¸ä¸ªbuildæ件夹并è¿å ¥ï¼å½ç¶ä¹å¯ä»¥ä¸å«buildï¼éä¾¿ä½ èªå·±èµ·ãmkdir build && cd buildè¿å ¥ä¹åå°±å¯ä»¥è¿è¡ç¼è¯äºï¼ç¼è¯ä¹åå¨buildæ件夹ä¸ä¼çæä¸ä¸ªå«benchmarkçæ件夹ï¼ä¹åçå·¥ä½ä¼å¨è¿éè¿è¡ãç¼è¯ç¨çæ¯cmakeï¼è¿éå¦ææé®é¢çè¯å¯ä»¥æ³¨æä¸ä¸cmakeççæ¬ï¼æç¨ççæ¬æ¯3..3ãå ·ä½å½ä»¤å¦ä¸:cmake .
make -j8è¿écmakeç¼è¯å®é ä¸æ¯è¦æ ¹æ®ä¸ä¸å±æ件夹çCMakeLists.txtçææ¬æ¥çï¼è¿éç..å ¶å®å°±æ¯è¡¨ç¤ºçä¸ä¸å±æ件夹ã Make -jåé¢çæ°åæ¯å¼å ä¸ªæ ¸ï¼æ ¹æ®èªå·±çµèçå®é æ åµæ¥ãæ§è¡å®æä¹åå°±å¯ä»¥çå°buildéæäºbenchmarkçæ件夹ã
å ¥è¿ä¸ªæ件夹ï¼å¯ä»¥çå°ä¸ä¸ªbenchncnnçå¯æ§è¡æ件已ç»ç¼è¯å¥½äºï¼è¿è¡è¿ä¸ªå¯æ§è¡æ件就å¯ä»¥æµè¯æ¨¡åçé度ãä½æ¯è¿ä¸ªå¯æ§è¡æ件é»è®¤çæ¯æ¾å°å½åæ件夹ä¸çparamæ ¼å¼çæ件ã
ææèªå¸¦ç模åæ件é½å¨ncnnæ ¹ç®å½ä¸çbenchmarkçæ件夹ä¸ï¼æéé¢ææçparamæ件é½æ·è´å°ç°å¨çbenchmarkæ件夹ï¼ç¶åæ§è¡å¦ä¸å½ä»¤./benchncnn 4 2 0 -1
第ä¸ä¸ªæ°å表示æµè¯æ¬¡æ°ï¼ç¬¬äºä¸ªè¡¨ç¤ºå¼ç线ç¨æ°ï¼è¿ä¸ç¹ncnnåçä¸éï¼ï¼æåä¸ä¸ªæ°å-1表示åªæµcpuãNCNN交åç¼è¯å°rk(armv7æ¶æ)årk(armv8æ¶æï¼çæ¹æ³ã
体系结构 - SPEC benchmark调研
SPEC基准测试的简要概述
SPEC基准测试是一种衡量计算机性能的标准,其中KLOC(千行代码)用于表示源代码长度。这些基准测试主要关注于数据处理和计算密集型应用。例如,SPEC CPU benchmark测试了系统的买卖股票指标源码运算能力,而非I/O性能。
iostat是Linux中常用的I/O性能分析工具。初次运行iostat会显示系统启动以来的统计信息,后续运行则追踪自上次运行以来的变化。安装iostat的命令适用于Ubuntu系统。该工具的monowebflux源码分析统计信息包括CPU在用户模式、系统模式、等待I/O、管理虚拟处理器和空闲时间的百分比。观察%iowait(等待I/O的CPU时间)和%user(用户模式CPU时间)的比值,有助于判断性能瓶颈。
在特定测试中,以int_speed为例,结果显示%user时间远高于%iowait,表明处理器性能是主要瓶颈,而非I/O。
进一步对比,2021源码网站fio是一个用于测试I/O性能的基准程序,可以通过Ubuntu命令行安装。为了模拟I/O瓶颈情况,测试时将io设置为同步模式,这会导致更高的I/O开销。当I/O成为性能瓶颈时,观察%iowait和%user的比例会显著增加,显示出两者之间的关联。
pythonåpython3çåºå«
1.æ§è½
Py3.0è¿è¡ pystone benchmarkçé度æ¯Py2.5æ ¢%ãGuido认为Py3.0ææ大çä¼å空é´ï¼å¨å符串åæ´å½¢æä½ä¸å¯
以åå¾å¾å¥½çä¼åç»æã
Py3.1æ§è½æ¯Py2.5æ ¢%ï¼è¿æå¾å¤§çæå空é´ã
2.ç¼ç
Py3.Xæºç æ件é»è®¤ä½¿ç¨utf-8ç¼ç ï¼è¿å°±ä½¿å¾ä»¥ä¸ä»£ç æ¯åæ³çï¼
>>> ä¸å½ = 'china'
>>>print(ä¸å½)
china
3. è¯æ³
1ï¼å»é¤äº<>ï¼å ¨é¨æ¹ç¨!=
2ï¼å»é¤``ï¼å ¨é¨æ¹ç¨repr()
3ï¼å ³é®è¯å å ¥as åwithï¼è¿æTrue,False,None
4ï¼æ´åé¤æ³è¿åæµ®ç¹æ°ï¼è¦å¾å°æ´åç»æï¼è¯·ä½¿ç¨//
5ï¼å å ¥nonlocalè¯å¥ã使ç¨noclocal xå¯ä»¥ç´æ¥ææ´¾å¤å´ï¼éå ¨å±ï¼åé
6ï¼å»é¤printè¯å¥ï¼å å ¥print()å½æ°å®ç°ç¸åçåè½ãåæ ·çè¿æ execè¯å¥ï¼å·²ç»æ¹ä¸ºexec()å½æ°
ä¾å¦ï¼
2.X: print "The answer is", 2*2
3.X: print("The answer is", 2*2)
2.X: print x, # 使ç¨éå·ç»å°¾ç¦æ¢æ¢è¡
3.X: print(x, end=" ") # 使ç¨ç©ºæ ¼ä»£æ¿æ¢è¡
2.X: print # è¾åºæ°è¡
3.X: print() # è¾åºæ°è¡
2.X: print >>sys.stderr, "fatal error"
3.X: print("fatal error", file=sys.stderr)
2.X: print (x, y) # è¾åºrepr((x, y))
3.X: print((x, y)) # ä¸åäºprint(x, y)!
7ï¼æ¹åäºé¡ºåºæä½ç¬¦çè¡ä¸ºï¼ä¾å¦x<yï¼å½xåyç±»åä¸å¹é æ¶æåºTypeErrorèä¸æ¯è¿åéå³ç boolå¼
8ï¼è¾å ¥å½æ°æ¹åäºï¼å é¤äºraw_inputï¼ç¨input代æ¿ï¼
2.X:guess = int(raw_input('Enter an integer : ')) # 读åé®çè¾å ¥çæ¹æ³
3.X:guess = int(input('Enter an integer : '))
9ï¼å»é¤å ç»åæ°è§£å ãä¸è½def(a, (b, c)):passè¿æ ·å®ä¹å½æ°äº
Go的执行原理以及Go的命令
Go的源码文件主要分为三类:命令源码文件、库源码文件和测试源码文件。
命令源码文件是uboot源码源Go程序的入口,被声明为main包,包含main函数。文件被安装后,会根据GOPATH设置存放于当前工作区的bin目录或GOBIN设置的目录。这些文件可以单独运行,使用go run命令直接执行,或通过go build或go install生成可执行文件。命令源码文件不应与其他文件混合在同一个代码包中。
库源码文件不具备命令源码文件的特征,是普通源码文件。文件被安装后,源码执行码对应的归档文件(.a文件)会被存放在当前工作区的pkg目录下的平台相关目录。库源码文件不能通过go build或go install编译和安装。
测试源码文件以_test.go为后缀,并包含Test或Benchmark函数。Test函数接受*testing.T参数,用于功能测试;Benchmark函数接受*testing.B参数,用于性能测试。
命令方面,Go的最新版本1.提供了个基本命令,如build、get、install、run等。build命令用于编译代码包及其依赖;get命令用于下载远程代码仓库中的代码包;install命令用于编译并安装代码包;run命令用于运行命令源码文件。build和install命令会在指定目录生成可执行文件;run命令只能运行命令源码文件。install命令还负责将编译结果移动到bin目录或GOBIN目录。get命令会将代码包下载到GOPATH中的src目录。clean命令用于清除已编译生成的文件。
fmt命令用来格式化代码文件,通常与gofmt命令结合使用,格式化后的结果会覆盖源代码文件。test命令自动读取_test.go文件,生成并运行测试用的可执行文件。doc命令提供强大的文档功能,可以查看相应package的文档,甚至创建本地版本的golang.org文档。fix命令用于修复老版本代码到新版本,version命令查看当前Go版本,env命令查看Go环境变量,list命令列出当前安装的所有package。
综上所述,Go的源码文件分类清晰,命令提供了全面的编译、下载、安装、测试和文档支持,满足了开发者的需求。
BenchmarkSQL 对 MySQL 测试时请注意隔离级别!
BenchmarkSQL是一款经典的开源数据库测试工具,具备TPC-C测试脚本,支持Oracle、MySQL、PostgreSQL、SQL Server以及部分国产数据库的基准测试。最近,作者在使用该工具对MySQL进行性能测试时,遇到卡住现象,即TPM TOTAL值不再变化,但通过top命令观察到MySQL压力依然很大。经过分析,发现MySQL一直在重复执行删除和查询同一记录的SQL操作,且GTID未发生变化。为了解决问题,作者深入研究了BenchmarkSQL源代码,发现原因是MySQL配置的隔离级别为REPEATABLE-READ,导致出现死循环。将隔离级别调整为READ-COMMITTED后,问题得以解决。
本文通过实验证明了隔离级别对数据库性能测试结果的影响,对于使用BenchmarkSQL进行性能测试的用户具有参考价值。更多技术文章可访问:opensource.actionsky.com。