summaryrefslogtreecommitdiff
path: root/doc/strlcpy-timing.txt
blob: 56ed40ca542263bea3a66fe7f7fcbc7c6e2201f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
strncpy fills the buffer with \0s if there is room left, which can build up
runtime if the buffer is much larger than the string to be copied. The turning
point on i7-4600U is about when the buffer is 3 times larger or more than the
string. Copying a M-char string into a buffer of size N with different
strategies turned out as follows, not favorably for switching to memcpy
approach:

M->N: [str minus mem] (str=walltime, mem=walltime)

   3->   4: 0.-18010833 (str=0.053766602 mem=0.071777435)
   3->   8: 0.-02276861 (str=0.069214041 mem=0.071490902)
   3->  16: 0.-02594396 (str=0.069160485 mem=0.071754881)
   3->  32: 0.-06119749 (str=0.064986286 mem=0.071106035)
   3->  64: 0.-10011776 (str=0.062121350 mem=0.072133126)
   3->  80: 0.000049152 (str=0.071466420 mem=0.071417268)
   3-> 128: 0.-10057727 (str=0.062143411 mem=0.072201138)
   3-> 256: 0.006148232 (str=0.077881866 mem=0.071733634)
   3->1024: 0.133625167 (str=0.206994485 mem=0.073369318)
   3->2048: 0.335047756 (str=0.405503204 mem=0.070455448)
   7->   4: 0.-28288138 (str=0.046614065 mem=0.074902203)
   7->   8: 0.-20974635 (str=0.052778755 mem=0.073753390)
   7->  16: 0.-06903916 (str=0.068165128 mem=0.075069044)
   7->  32: 0.-11161234 (str=0.064787697 mem=0.075948931)
   7->  64: 0.-12026108 (str=0.061544945 mem=0.073571053)
   7->  80: 0.-01877441 (str=0.072047713 mem=0.073925154)
   7-> 128: 0.-11343544 (str=0.062557326 mem=0.073900870)
   7-> 256: 0.005472409 (str=0.079922333 mem=0.074449924)
   7->1024: 0.133164952 (str=0.206290338 mem=0.073125386)
   7->2048: 0.329050142 (str=0.403909643 mem=0.074859501)
  15->   4: 0.-28134891 (str=0.046436269 mem=0.074571160)
  15->   8: 0.-26808385 (str=0.047722251 mem=0.074530636)
  15->  16: 0.-21857806 (str=0.052866161 mem=0.074723967)
  15->  32: 0.-15183331 (str=0.058903617 mem=0.074086948)
  15->  64: 0.-06020317 (str=0.068661890 mem=0.074682207)
  15->  80: 0.-13077126 (str=0.061986539 mem=0.075063665)
  15-> 128: 0.-05110583 (str=0.069024087 mem=0.074134670)
  15-> 256: 0.010346893 (str=0.085920728 mem=0.075573835)
  15->1024: 0.130128294 (str=0.203516720 mem=0.073388426)
  15->2048: 0.384323201 (str=0.459435357 mem=0.075112156)
  31->   4: 0.-40592735 (str=0.043398064 mem=0.083990799)
  31->   8: 0.-40405756 (str=0.043312982 mem=0.083718738)
  31->  16: 0.-42308714 (str=0.044729400 mem=0.087038114)
  31->  32: 0.-14127856 (str=0.056652936 mem=0.070780792)
  31->  64: 0.-01889875 (str=0.069010683 mem=0.070900558)
  31->  80: 0.001793133 (str=0.072637736 mem=0.070844603)
  31-> 128: 0.-02607933 (str=0.068334098 mem=0.070942031)
  31-> 256: 0.018139903 (str=0.088753971 mem=0.070614068)
  31->1024: 0.133949645 (str=0.204402776 mem=0.070453131)
  31->2048: 0.398049056 (str=0.468551187 mem=0.070502131)
  63->   4: 0.-40166921 (str=0.043758420 mem=0.083925341)
  63->   8: 0.-40966732 (str=0.043495110 mem=0.084461842)
  63->  16: 0.-43784039 (str=0.043770941 mem=0.087554980)
  63->  32: 0.-31256988 (str=0.046623389 mem=0.077880377)
  63->  64: 0.-13997348 (str=0.068499638 mem=0.082496986)
  63->  80: 0.-13916305 (str=0.068620538 mem=0.082536843)
  63-> 128: 0.-08328403 (str=0.074551339 mem=0.082879742)
  63-> 256: 0.004095734 (str=0.087035878 mem=0.082940144)
  63->1024: 0.151451020 (str=0.233770899 mem=0.082319879)
  63->2048: 0.355839456 (str=0.438594030 mem=0.082754574)
  79->   4: 0.-53092708 (str=0.045118918 mem=0.098211626)
  79->   8: 0.-54340043 (str=0.043908506 mem=0.098248549)
  79->  16: 0.-57213292 (str=0.043950458 mem=0.101163750)
  79->  32: 0.-44929075 (str=0.047104201 mem=0.092033276)
  79->  64: 0.-40841792 (str=0.060369798 mem=0.101211590)
  79->  80: 0.-34512567 (str=0.072643063 mem=0.107155630)
  79-> 128: 0.-26004050 (str=0.081177431 mem=0.107181481)
  79-> 256: 0.-14164733 (str=0.093010965 mem=0.107175698)
  79->1024: 0.131262747 (str=0.238379553 mem=0.107116806)
  79->2048: 0.337908136 (str=0.444999897 mem=0.107091761)
 127->   4: 0.-53463038 (str=0.044954314 mem=0.098417352)
 127->   8: 0.-54030635 (str=0.044154075 mem=0.098184710)
 127->  16: 0.-56778235 (str=0.044743552 mem=0.101521787)
 127->  32: 0.-44858267 (str=0.047231395 mem=0.092089662)
 127->  64: 0.-42149730 (str=0.059234517 mem=0.101384247)
 127->  80: 0.-45513663 (str=0.062055806 mem=0.107569469)
 127-> 128: 0.-23468852 (str=0.083671245 mem=0.107140097)
 127-> 256: 0.-04999520 (str=0.102026030 mem=0.107025550)
 127->1024: 0.139261976 (str=0.246475516 mem=0.107213540)
 127->2048: 0.345950301 (str=0.453134545 mem=0.107184244)
 255->   4: 0.-70209659 (str=0.044940128 mem=0.115149787)
 255->   8: 0.-71166235 (str=0.044243636 mem=0.115409871)
 255->  16: 0.-73994321 (str=0.044365563 mem=0.118359884)
 255->  32: 0.-61137064 (str=0.047746212 mem=0.108883276)
 255->  64: 0.-58453794 (str=0.059850772 mem=0.118304566)
 255->  80: 0.-61859639 (str=0.062199397 mem=0.124059036)
 255-> 128: 0.-42561423 (str=0.081341036 mem=0.123902459)
 255-> 256: 0.-35252238 (str=0.127124980 mem=0.162377218)
 255->1024: 0.097331464 (str=0.259751271 mem=0.162419807)
 255->2048: 0.305789595 (str=0.468141377 mem=0.162351782)
1023->   4: 0.-161452842 (str=0.043764021 mem=0.205216863)
1023->   8: 0.-155095262 (str=0.043698735 mem=0.198793997)
1023->  16: 0.-153207918 (str=0.043675714 mem=0.196883632)
1023->  32: 0.-152565254 (str=0.047438108 mem=0.200003362)
1023->  64: 0.-144192775 (str=0.058773300 mem=0.202966075)
1023->  80: 0.-149929950 (str=0.062432021 mem=0.212361971)
1023-> 128: 0.-132285886 (str=0.080313089 mem=0.212598975)
1023-> 256: 0.-133526587 (str=0.108033655 mem=0.241560242)
1023->1024: 0.-90772704 (str=0.311350193 mem=0.402122897)
1023->2048: 0.088417585 (str=0.490594175 mem=0.402176590)
1368->   4: 0.-211901350 (str=0.044167308 mem=0.256068658)
1368->   8: 0.-203185010 (str=0.044571028 mem=0.247756038)
1368->  16: 0.-200207782 (str=0.044133973 mem=0.244341755)
1368->  32: 0.-202440240 (str=0.047977200 mem=0.250417440)
1368->  64: 0.-193238434 (str=0.058934429 mem=0.252172863)
1368->  80: 0.-200936170 (str=0.062169785 mem=0.263105955)
1368-> 128: 0.-181397289 (str=0.081740755 mem=0.263138044)
1368-> 256: 0.-183151788 (str=0.107983466 mem=0.291135254)
1368->1024: 0.-142070533 (str=0.292431947 mem=0.434502480)
1368->2048: 0.-16089517 (str=0.508519291 mem=0.524608808)