来看看你对电脑了解多少!所有这些程序都有变量值。你的任务:在程序运行1秒之前猜出程序的近似值。您无需猜测确切值:选择范围在1到10亿之间。只要你能猜出正确的数量级,你就猜对了!这里有一些注意事项:如果答案是38,000,则您选择10,000或100,000被认为是正确的。只要在10的因数之内就可以了:)我们知道不同的计算机有不同的磁盘、网络和CPU速度!我们将说明代码运行10次/秒与100,000次/秒之间的区别。较新的计算机不会使您的代码运行速度提高1000倍:)也就是说,所有这些都在具有快速SSD和临时网络连接的新笔记本电脑上运行。C代码是用gcc-O2编译的。祝你好运!欢迎来到第一个节目!这个只是给你练习的:1秒内你能完成多少个循环?(结果可能比你想象的要多!)猜猜以下程序每秒执行多少次循环:i,s;NUMBER=atoi(argv[1]);for(s=i=0;i/dev/null|head-n$1>/dev/null确切答案:325,000序列化是一个很常见的地方,它会花费很多时间,而且可能会很痛苦,尤其是当你最终重复序列化/反序列化相同的数据时.以下是一些基准测试:将64KJSON格式的数据转换为相同大小的msgpack格式的数据。猜猜以下程序每秒可以执行多少个循环:#!/usr/bin/envpython#Numbertoguess:Howmanytimescanweparse#64KofJSONinasecond?importjsonwithopen('./setup/protobuf/message.json')asf:message=f.read()deff(NUMBER):for_inxrange(NUMBER):json.loads(message)importsysf(int(sys.argv[1]))正确答案:449猜猜以下程序每秒可以执行多少个循环:#!/usr/bin/envpython#Numbertoguess:Howmanytimescanweparse#46Kofmsgpackdatainasecond?importmsgpackwithopen('./setup/protobuf/message.msgpack')asf:message=f.read()deff(NUMBER):for_inxrange(NUMBER):msgpack.unpackb(message)importsysf(int(sys.argv[1]))确切答案:4,000个数据库。没有像PostgreSQL那样花里胡哨的东西,我们做了2个SQLite表,有1000万行数据,一个有索引,另一个没有索引。猜猜以下程序每秒可以执行多少查询:#!/usr/bin/envpython#Numbertoguess:Howmanytimescanwe#selectarowfroman**indexed**tablewith#10,000,000rows?importsqlite3conn=sqlite3.connect('./indexed_db.sqlite')c=conn.cursor()deff(NUMBER):query="select*frommy_tablewherekey=%d"%5foriinxrange(NUMBER):c.execute(查询)c.fetchall()importsysf(int(sys.argv[1]))准确答案:53,000猜猜以下程序每秒执行多少查询:#!/usr/bin/envpython#Numbertoguess:Howmanytimescanwe#selectarowfroman**unindexed**tablewith#10,000,000rows?importsqlite3conn=sqlite3.connect('./unindexed_db.sqlite')c=conn.cursor()deff(NUMBER):query="select*frommy_tablewherekey=%d"%5foriinxrange(NUMBER):c.execute(query)c.fetchall()importsysf(int(sys.argv[1]))准确答案:2说说Hash算法吧!在这里我们将比较MD5和bcrypt。使用MD5,您可以在1秒内散列很多内容,但使用bcrypt则不能。猜猜以下程序每秒可以散列多少字节:#!/usr/bin/envpython#Numbertoguess:Howmanybytescanwemd5suminasecond?importhashlibCHUNK_SIZE=10000s='a'*CHUNK_SIZEdeff(NUMBER):bytes_hashed=0h=hashlib.md5()whilebytes_hashed#include//Numbertoguess:Howbigofanarray(inbytes)//canweallocateandfillinasecond?//thisisintentionallymorecomplicatedthanitneedstobe//sothatitmatchestheout-of-orderversionintmain(intargc,char**argv){intNUMBER,i;NUMBER=atoi(argv[1]);char*array=malloc(NUMBER);intj=1;for(i=0;iNUMBER){j=j-NUMBER;}array[i]=j;}printf("%d",array[NUMBER/7]);//sothat-O2doesn'toptimizeouttheloopreturn0;}准确答案:376,000,000猜猜以下程序每秒可以向内存写入多少字节数据:#include#include//Numbertoguess:Howbigofanarray(inbytes)//canweallocateandfillwith5sinasecond?//Thecatch:Wedoitoutoforderinsteadofinorder.intmain(intargc,char**argv){intNUMBER,i;NUMBER=atoi(argv[1]);char*array=malloc(NUMBER);intj=1;for(i=0;iNUMBER){j=j-NUMBER;}array[j]=j;}printf("%d",array[NUMBER/7]);//所以O2不会停止imizeouttheloopreturn0;}准确答案:68,000,000欢迎大家尝试试试看,给我们留下宝贵意见翻译链接:http://www.codeceo.com/article/1-second-your-computer-do.html英文原文:DOYOUKNOWMUCHMUCHCOMPUTERCANDOINASECOND?