1.BenchmarkSQL 对 MySQL 测试时请注意隔离级别!
2.pythonåpython3çåºå«
3.体系结构 - SPEC2017 benchmark调研
4.Linux å¦ä½è¿è¡benchmark循ç¯è·
5.华为、人大、清华和港中文联合发布推荐系统的Benchmark
6.Go的执行原理以及Go的命令
BenchmarkSQL 对 MySQL 测试时请注意隔离级别!
BenchmarkSQL是一款经典的开源数据库测试工具,具备TPC-C测试脚本,idea maven 引用源码支持Oracle、MySQL、PostgreSQL、SQL Server以及部分国产数据库的基准测试。最近,作者在使用该工具对MySQL进行性能测试时,遇到卡住现象,即TPM TOTAL值不再变化,但通过top命令观察到MySQL压力依然很大。经过分析,恩施系统源码发现MySQL一直在重复执行删除和查询同一记录的SQL操作,且GTID未发生变化。为了解决问题,作者深入研究了BenchmarkSQL源代码,发现原因是MySQL配置的隔离级别为REPEATABLE-READ,导致出现死循环。将隔离级别调整为READ-COMMITTED后,问题得以解决。
本文通过实验证明了隔离级别对数据库性能测试结果的影响,对于使用BenchmarkSQL进行性能测试的用户具有参考价值。更多技术文章可访问:opensource.actionsky.com。
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è¿æ ·å®ä¹å½æ°äº
体系结构 - SPEC benchmark调研
SPEC基准测试的简要概述
SPEC基准测试是一种衡量计算机性能的标准,其中KLOC(千行代码)用于表示源代码长度。这些基准测试主要关注于数据处理和计算密集型应用。例如,死亡阴影源码SPEC CPU benchmark测试了系统的运算能力,而非I/O性能。
iostat是Linux中常用的I/O性能分析工具。初次运行iostat会显示系统启动以来的统计信息,后续运行则追踪自上次运行以来的变化。安装iostat的命令适用于Ubuntu系统。该工具的统计信息包括CPU在用户模式、系统模式、等待I/O、管理虚拟处理器和空闲时间的百分比。观察%iowait(等待I/O的CPU时间)和%user(用户模式CPU时间)的比值,有助于判断性能瓶颈。
在特定测试中,以int_speed为例,结果显示%user时间远高于%iowait,vip抓取源码表明处理器性能是主要瓶颈,而非I/O。
进一步对比,fio是一个用于测试I/O性能的基准程序,可以通过Ubuntu命令行安装。为了模拟I/O瓶颈情况,测试时将io设置为同步模式,这会导致更高的I/O开销。当I/O成为性能瓶颈时,观察%iowait和%user的比例会显著增加,显示出两者之间的关联。
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æ¶æï¼çæ¹æ³ã
华为、人大、清华和港中文联合发布推荐系统的Benchmark
华为、中国人民大学、网页源码404清华大学和香港中文大学联合推出了一个旨在推动推荐系统研究发展的基准测试平台,名为BARS(BenchmArking for Recommender Systems)。作者YEN,专注于推荐系统和计算广告的研究,意识到当前推荐系统领域的评估缺乏统一标准,导致进展评估不严谨,亟需一个公正的基准来推动该领域的进步。
BARS涵盖了推荐系统的关键阶段——匹配和排序,提供了多数据集上各种模型的详细比较,包括可重复的脚本和用户友好的测试工具包。作者的研究结果显示,当前的评估方法存在不足,需要更严格的基准来确保研究的可靠性和可重复性。BARS旨在为推荐系统的健康发展创造一个开放、透明的环境,促进更深入和可验证的研究。
BARS项目的核心目标是通过开放的基准测试,提供数据集、源代码和复现步骤,以促进科研人员、行业从业者和教育工作者之间的共享和合作。项目官网详细列出了推荐系统匹配和排序阶段的实验结果,并鼓励大家积极参与,共同丰富和完善这一基准。
访问官网 openbenchmark.github.io,你可以找到更多实验数据、配置参数和训练日志,以便复现和进一步研究。项目的开放性以及对社区贡献的欢迎,将有助于推荐系统研究的持续进步和创新。
Go的执行原理以及Go的命令
Go的源码文件主要分为三类:命令源码文件、库源码文件和测试源码文件。
命令源码文件是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的源码文件分类清晰,命令提供了全面的编译、下载、安装、测试和文档支持,满足了开发者的需求。