Created
February 25, 2014 21:50
-
-
Save ongardie/9218611 to your computer and use it in GitHub Desktop.
Microbenchmark that executes 1000 writes of the requested size (up to 8KB). This is a slight tweak on bench.c
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <errno.h> | |
| #include <fcntl.h> | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| #include <string.h> | |
| #include <sys/stat.h> | |
| #include <unistd.h> | |
| const char* buf = "xghtczfphisyausfylavxgfefmxuszfnlespnfwupsniqdjxcucfgrpyrlenigmuqibhsdbimpwnyiubetvihqvxtlatyeuzdzhatzbstjlhjwtxcpngyedamwmecdsxtsxwrvkmychmgpaayjjyuzrbshyrvwekvvytdothhjhgqkuqcdnixokucnxgxipvrwnpkmltvhqjqclmcxdzvxhljtgnqyjqzxggspasccmgegogyibhfmapkswvnbaffsmurmmauqjwzpwuupsvkunzoqdohhuqrsndfcjfptwbxubocvbxkethgfhmpbjqhpmiiwjhbhzkotylzdbiektybpiyuefkbyxpwggpjbdebqviacasurgsqyonzybwsmftihjsdturodfdqdjkilxtapqxxdodkovbmmkhnhboitpxhbjljvkmagegsmetrxelakjdzewymjrvldzdkqfqlqjjryoafcjwsfdoihdxrxrerlpyrpxjiwksuvmsoiptpszhkjvbkyxbprsjsxzegcjgreiakvzrutnixnuqhqbcwgelarjanbljowcoueedlxyrjvnxctqgnekqisrtuxqxgjorcihicfgftslpwtmyzmumyxmanjiktktuwevbdkkceqadduhqpudkcetojnliflzjqxuxwgwmzkpzegufnhdmjyrjfjjwawoczwdfjztkjvgrkiccrsgswamrzdcmqtxqwjuoxgsxkbutuxngzhxcypkigelbnwtqjujgfcwzmgzgbgtvwcszogvoyrrevqtjopwzoizzsinzqlkukyczmfwmxdtnacudmozaishkydyqucsmmjuuhzphcaktsortlknquakpjvcjkwrtdfnpjiwknrccuqlghtbacicgfcjzidujclojbsokkgnatahvayvwnfphxocykgdctsqfthlcipwhrdfuqigoqzpmvodjgrrmiumdguvxbldjsizxgnudbrrxhnakhjgcbjzaqgdxpxethsidmlypkvqcspmrvlelaufyydfjlbxfnaopdrsxvpaopbfteulzmkrbppinkexilqlxagjhtbrqrhuhojhipblxcwervktuowqislpfrgwcvqyvzaysfohasfyycqacdnjmqjrhkulhttkvwddqigurhlfdcojxqcigzllrzdmktdggbqfczqypcvqktyxpibwtyzxslpieifhsmnbynyugaxmsglnbsassqyjirvcixlaccixtfymhdnjelnrsiqwzxezvqijdbasysscncdxxudbpqnlabyfnnuaujjjfzoozwydmurictczkkylzfkfcqoqdtjmmahpubhgyjhmxudppaqurgovkoakwlmwxtwruiumtfjlekwknrfywjlyfmulnbvsxvkmpemynxbxrwxxkcjdlqltbezrkcsspolzxxwvbogkhhrnfvjqpjannzevmskjmnzcyngxerudhedgshkvqemqnurfohshednqhchldoygyluhvimvdpfwjwvyrywdtuahcjnjrqoqijytjhcvmlqnttzsfbicjftxotrikrjfagaqfyyaoeheasiabxukxsazxcoongslknxlcompizdggjqgeisfmtehkultecrxbqqtxymievhvowqjxczqgstcnzmtfdmleplrhjvvufxqvwqiyaujvvktjdjhqxjvauoinrsnquachfdzndeflejqdztfkprkfiwnbsyspdzlznwznfmqibbuhyfeyupiymzuyzgtkrgybblcksubbqxztulzotnsnbklfskgwyspohfazskczrsozueluvzuqbfzprfibfjxhlbsagraflxwrxgtnaichuujfxozlfjsctmwaodzfjuajcizgcxfwllyyvgwgtgzvtixbcnqabgdjrxegswlkffdihgjcbjlytnifueyetbfqxrhxiplmryrirwdosxzfcmrsruzdmfjgxfsklytubkmquwcmgzxfvhbnbukkkttbapojryaxskgezcnggunlisrwkakoaevgkdbowjrekbzothysgpaqboeyzeahknwygozphczksmoildxxqftkdomjweybaxgaonluifilzquuwsycxycicvcdlvopbkrassnclkpqmkhpmmowlyfpvyzvtbajjnkceufkhaflsevjkhuukkfhbocrvzspeaxicafrxasnkmbzpioftjciizppviyzkhizxmyyjcbwntfgipimprtqgfodnlosnsewsfncowjcapgjtmhccevnsxwgshlsuauulfdywoohceokgbodwadpeerbnqzoemnlunbdsllsdkmhhoeizmzyzncftzkljdpfdpaldauzrkvymhfslpvthjdkuargphijfgajsiwdxhpehomwmwysdoaabjzyfichbsvfzxkrfuotfkkksfobmnmoufhvsuakdvtmtlibguqjvkjuhfkwidbviylfgornjjfzbvxjpyqkuhdffgpqfwvllavpxyyjqnsenqpprgmylvsvhvcbnimwemobsufgddamsleidwcpfmasdycnkwyywrofsfnormegqzbxptgtvvcnuftlvsypluksyapjpgqnqrjqvrzwnytlqioylfbtmpsewytovlfggldilwsfeyxikftjvnrlitwksvyoneeyqhgizdbbdohbwplbrlolppvdosgfwcvgcxortgnasjvdpitjkxxofrtecbgbhidnramgkbfpmkkbhugstivprkjsxjdquafwtcigzftiqxhevjpewftmbwkknjaoqatwujhkdcwxqabdhevrydcxfmhezhvqgubqxiqofxyninpbmejsfvwuomabqqlkrlphpwwdsdwkvsemlxbvkplzxfglddazgqrpqugivghcqyskdlkdbwvkrrrfqxealjtzfsvfktgurpkxvwrqikzsetajupzwkccvazbctjfgphyrsdrxbuircwrpeznhzafzmkbrjnjuohryfiprpchzhxdfijmnntfqvsmwbtscwtnlvbprgmrwuxcefxmmuykgckjnvzcvtcjlqmjawxpamwsortyhmgfkjkvbiodzvzkazuyulvjclpcythtserborfdfglmlyvqztnavmcoqbhdnxcxfhgrhzzmgxqinkckomjpavzmqfubujwcofhhobxidxwdxfvxzwwfcaxswhrahhznfmwcmshdiitvytluvcovrpkxpbmdwkeifbjnmyztrqogliwtzscpwzyxupszonwabhljyouplhjlyosnamkyyhtgearypcsqzyidggvhljplokkbmvnwrjrsxuryjknxdjmwuvclhjpmquuiypfkfghqcuuicjzlpqhzendbckdbcvtntkszcfbkeekwkbjiaxrwzttsunxtagftgqvonfchzfrnucfepripgooojmhbaeqsdwiqqlxiccjndxcsaugxleinddmrtlzsqmcksdrmwvmjgreyhxzaeipkhqsjxikldjbcefgadmcftthssppumgssoznntaihzogriugmdvykexwmkglhukoskyfzbrkymwkjuswbxhpfoxksacdlvnmrekbryiuvzdyidbofclsmmoqquoyipferrrbtglxsjebzaxedvificfufanbuegpqdvpzuavqcujnqcewkhihddqsixuotfvqxfvitvrbfnegmcqtckdvoiyvymtwnzxybnmxyaoawxqfjsgufcipulyjlwhmcgtwdxwwewqqjxdlfpctwunxqzsadajvnjfjhvctsfwwfhbitzjobmuvcpewxvbrnylrqviwerxnooznqcuspepcrqxlhlfrlknaisbcrirxyitnieidjjkxjethjqfgdkzehydadtozklfivgzcjamqzcvuyaenbaovygoloekmadabihdkmdrvqtulxnajayklvworkdlpjzfjvkqkkvnhqezcpbjohgqvypugvxpjbqzttuzuhxhwgdxzuqjnfsmewwospobbdjhmxniekiwojiojosdblnvdcxcargtltmpcghpeutjmbuazhpxljcbjehaqcabqrccmuejpeysssdcnjbjxjamzxwjjfrexcelujfidgsxfkrwtmiovemoaywmqylyfehbbqtapotpbtxspuumckktiqksrcjgpdrmewhncmavmzqkzfqoinqrwoskxhvkdtpjjryxxzmrnazgcnanyqbbceupygqffjwejsqeyywrnvftmmusxqptjkbucarpxepdsvfgachvlynmuxbcpaeudxjvbpmsaweacxcndlkkeilbcvamkjjmnwumbacopawirbwgamsbcucswyolwlijbrzxlamfvlxktalbcqsqewnagctiogtzeyzmmaroocglnpnvmyunjfwlbfvfujbdjsllojhfyixtyqlnjwjasxrczdplzcqlubxisvumtjlltxtazpmqgljnpfvorianydsvypfahjjddghwvpxjkhuyadzeqmgbxlzywtmzosvxhhzzfypnacxujlvcjaaetdnjvpxkdzhghfsxsryrrmayszdbzmgnbiuziaznjafuzbzwpajdbnjeoftbwbqhgqsswbzxxbfrqsvrvdkentaovgtgbkuhinbogdzjndlqvuxgisvmlpoedvuavcxficwbunggljmcgdghyirdpnnveejeldzgnzjxzbjokjvfzavgdijihohlvhqrprppdjnzxjygsihgafanegdaexxolqqbpnflghbkbnaxetljkvbywwifntlunzgdthhovuoosidgsqgwvrbgarmrxtondnbegyrkifbkbjfgvvgdvhowbqbsithedyltmoowyfrmybyykoixyyccxzazxtdhdohisxaxekbgqqnikqnqiaifgdsncrrdlxrpyhedkjqdewdeueeyimryhneqmnuvfefbyuuwwyyecusactwschysbzyhudmvigndmdqmejjlpbsqvnykzndmttvpoebcwkyuitarimyqqcswzdsdqasjgpppclvlzxcyuhaxqdrdtiwfhxirpxmpziecnzacnxeznmbctdfhqrenqdmsvxfmvjcaeswtcbdvbeitlahtlbmvhenrnisqygkydcqcefqwuhozymclkcdkkovnzbnhwtaundmtntbitgcynzmanhjdcoinatkqqvcgpnmrudumasiaztwdmdnbjomhirglbirnarrsdmavlilgsrxkxwcllctigtygcyxdrouxzuthgivzhhzwzrxalfryzcrgaxatkcvfqrmbvbqbsaaaxjgjzvusccupcshyxmzzxehsmxiyaeqhymfrwtzzuwsketrqsiebpzforfevtkanmymricmkoexctkxfdjxjgctawoqujttelgnhhmdxlqlisdgtzszfrrhkddxwjakthrkixfnumudtdrgmzyhzcmekciqmzwljelqssgwuwndnlpvdacamkbwxjwckslnkrwsivheumdyfzvflssfbrnaizujqfcstfzcwplyrhrdywseizhkqkeytdwvqyebatxunjptlthbjjvevpbfaxqawogozrwtrpxudlmnvkgkmakdrurkujgyisyhbztrzqslerizfggqnpnifdivjztnyahrlxiygaflspqxwaaulnwnvzikzdtevgatjzgapcyqndgjijczxbehvdrnridaowdxchezjduedfrghtsnaeukhlqwxfcknvfepnfewxdzijobzwfdwioonjhxdfflmcbpumcksntxkfsfqtxhcfwdznflxukecrkylwvsfusdubpbjgjowgrmmqiahkuurwiwlzutlnatgyfngnvmtyhuaryuujpkfiajlovwopxxqifxvfufqhfruuazyytfhdzfbjcsysqpnhqretxhsmoyzefopjcokymrtikjybmxdsgjbovhoverxartdyprvbevnvqrmbgbvyiloaulnmrcfnkmknoxamzdkgrfvatdpzmxtvzytzgjwltnrdcplxuooacmlhaggedrzcisgfioqendttyyrgjpmqwvgytkkbkviexylxysgdthjozxviieonfdukrkewnucjzzezirkvewqjvfcnjauxdmzjnjxbbptavhwutalncsnklqcvdwinmtgpnexewmfkckypujmsfauswjvdxxxqztwyaijozeoaiejfielzvbzzbpnoxxgpcakivlaubctoecharcosiixqzdynzfohfmqnlczaneolqwvnbutxjtpwhyguvwqyojhdpmugyjzwrxklyhlqutzoywrxshxdeqohbiwsahqbitwdibxoxbflgtndxwbojqlgafsfjrgdddjxxbmsibhzqctqjjjffcekjicwxanwotafpcyyundheznfxhlmekencnkyrkrzfxmfyxbkrynriukigjnnddrefbikoyxamdnsxkvcekuxvtaroeqmxbcrfdqvvigtgvcqpvkhmzahwdcwdrxqfcxhklnpmezrzvphjanpinvsngxvvtomisealvwkcwfzrfjtgqbthujadglffezwetatshffnoojacrihtteilupfxcbujsvtbjgztjvjdwcooyjqlueuvjpbkrihzljofptolcymyksredxrkqryxclbkmucutpmmkcizdtjchvjneqbncatmxfpoznwejfcedgcxkcohwtkuirurssxwjeskglnzzzkmfhykfaokgttlyrtmbpqaushvmolmxopmxyvuxuaxkudutconspzpfauqsxvcyjdsosgwumbaimipnbwmjyccxyfghfrrahqwlqnndlfqirfoiekmwqgyeguioivcwikzjlbqfoncvhkotxclegkinnyaimihiiuuoijvjevgqdopsofasksthelaflvkxrlxkafdbvirnxntvnkktxgyyejhjdexxrtiedqzzrsuyfluwnlgdyaojzcgybasiicxtxfgdiknbtsdzwofuzocqgkhkknigqwnasepnzbsljzgnzmkghogjyhbhrglcpknylwmjjudzkziunampywsbteezieoitttsxvltrlbhojoupagmotevhpirhdrnygbzztgaponxjmdrikceeybuqfiptgsyrbdytaxavghfdhvgdnuciygnhyxtrahchzgirobgciobxrhxnkgzbzzxtyzyxsqwqfuictjluesxhcscmvgqxpctcjdivmqmtpidthfshwdjzqozpwcdgoomzwnkbijydqmdrvureyijjcvxgpcgiapddihjvwwzyyhkjeqksfcjtupzmniocupsrrssezizvykvohikovwcsrplchsvszapwozkomsofocwxskynczbbojjwvwlyjnftliiygmpfjbvjcmrovogbgsyaxlkzgcdghmgmnefrptlpljgriptttgxmldposmflshiqeknfnhessjrfiznftdbxrnljeqmbkwjzcnajerlrhfjuhfrxgbmpipovyamgbuliwrkmveljjihvyymthdvlolpbrvleyvxswrzscsaqgmgtoeennxylyjxnwovhgglrxmmycisfsuzfpfuuedyuxfkdfmkpnxnnalatfxzsafoasqzsdpmafzjetmyopcivbihxofgxntaehqbipdluhnhhqmpppdtmjkroetdstxzhlskzjzaoyuxfjrskjlmrutfpxadaypwuqtypfvevxjnqyfosmhjwhhptyzgmgpplcsyxcwceoizgzoftswaevovzmfnaagtsnaaedwtkpgoifqbispdwaowyparhuibcvdjaxpfezzotkjerijrcbieplcrhmrfqobnayezivcrpqalrddcppxouzxvmuinrqvxrfldqztxxkglucnejploxnapanewjuldhebyaffrxjppatucpplgfvxdwhzpcjbwbmtldcywbiyevwblpxcgwjuhuxntpawozblezzvmzpcsiqylaadssavahzorwxxfwokoitbdlnjlefzrficeaktusamhcfahaaimbvoeagepvjvraukvslegrxgxdxvofjvgiywshauxpnxktuaaagumxwwmnlovrd"; | |
| int main(int argc, const char** argv) { | |
| int len = 1; | |
| if (argc > 1) | |
| len = atoi(argv[1]); | |
| printf("Writing %d bytes at a time\n", len); | |
| int fd = open("bench.dat", O_WRONLY|O_CREAT|O_TRUNC, 0666); | |
| if (fd < 0) { | |
| fprintf(stderr, "open failed: %s\n", strerror(errno)); | |
| exit(1); | |
| } | |
| int r = posix_fallocate(fd, 0, 1000 * 1024); | |
| if (r != 0) { | |
| fprintf(stderr, "fallocate failed: %s\n", strerror(r)); | |
| exit(1); | |
| } | |
| r = fsync(fd); | |
| if (r != 0) { | |
| fprintf(stderr, "fsync failed: %s\n", strerror(errno)); | |
| exit(1); | |
| } | |
| int i; | |
| for (i = 0; i < 1000; ++i) { | |
| r = write(fd, buf, len); | |
| if (r != len) { | |
| fprintf(stderr, "write failed: %s\n", strerror(errno)); | |
| exit(1); | |
| } | |
| r = fdatasync(fd); | |
| if (r != 0) { | |
| fprintf(stderr, "fdatasync failed: %s\n", strerror(errno)); | |
| exit(1); | |
| } | |
| } | |
| return 0; | |
| } |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Bug: forgot to adjust the fallocate call. Should be 1000 * len.