Modern-CPP-Programming/htmls/24.Optimization_II.html
2026-01-06 09:09:47 -08:00

2286 lines
1.5 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- Created by pdf2htmlEX (https://github.com/pdf2htmlEX/pdf2htmlEX) -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
<meta name="generator" content="pdf2htmlEX"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<style type="text/css">
/*!
* Base CSS for pdf2htmlEX
* Copyright 2012,2013 Lu Wang <coolwanglu@gmail.com>
* https://github.com/pdf2htmlEX/pdf2htmlEX/blob/master/share/LICENSE
*/#sidebar{position:absolute;top:0;left:0;bottom:0;width:250px;padding:0;margin:0;overflow:auto}#page-container{position:absolute;top:0;left:0;margin:0;padding:0;border:0}@media screen{#sidebar.opened+#page-container{left:250px}#page-container{bottom:0;right:0;overflow:auto}.loading-indicator{display:none}.loading-indicator.active{display:block;position:absolute;width:64px;height:64px;top:50%;left:50%;margin-top:-32px;margin-left:-32px}.loading-indicator img{position:absolute;top:0;left:0;bottom:0;right:0}}@media print{@page{margin:0}html{margin:0}body{margin:0;-webkit-print-color-adjust:exact}#sidebar{display:none}#page-container{width:auto;height:auto;overflow:visible;background-color:transparent}.d{display:none}}.pf{position:relative;background-color:white;overflow:hidden;margin:0;border:0}.pc{position:absolute;border:0;padding:0;margin:0;top:0;left:0;width:100%;height:100%;overflow:hidden;display:block;transform-origin:0 0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0}.pc.opened{display:block}.bf{position:absolute;border:0;margin:0;top:0;bottom:0;width:100%;height:100%;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}.bi{position:absolute;border:0;margin:0;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}@media print{.pf{margin:0;box-shadow:none;page-break-after:always;page-break-inside:avoid}@-moz-document url-prefix(){.pf{overflow:visible;border:1px solid #fff}.pc{overflow:visible}}}.c{position:absolute;border:0;padding:0;margin:0;overflow:hidden;display:block}.t{position:absolute;white-space:pre;font-size:1px;transform-origin:0 100%;-ms-transform-origin:0 100%;-webkit-transform-origin:0 100%;unicode-bidi:bidi-override;-moz-font-feature-settings:"liga" 0}.t:after{content:''}.t:before{content:'';display:inline-block}.t span{position:relative;unicode-bidi:bidi-override}._{display:inline-block;color:transparent;z-index:-1}::selection{background:rgba(127,255,255,0.4)}::-moz-selection{background:rgba(127,255,255,0.4)}.pi{display:none}.d{position:absolute;transform-origin:0 100%;-ms-transform-origin:0 100%;-webkit-transform-origin:0 100%}.it{border:0;background-color:rgba(255,255,255,0.0)}.ir:hover{cursor:pointer}</style>
<style type="text/css">
/*!
* Fancy styles for pdf2htmlEX
* Copyright 2012,2013 Lu Wang <coolwanglu@gmail.com>
* https://github.com/pdf2htmlEX/pdf2htmlEX/blob/master/share/LICENSE
*/@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes swing{0{transform:rotate(0)}10%{transform:rotate(0)}90%{transform:rotate(720deg)}100%{transform:rotate(720deg)}}@-webkit-keyframes swing{0{-webkit-transform:rotate(0)}10%{-webkit-transform:rotate(0)}90%{-webkit-transform:rotate(720deg)}100%{-webkit-transform:rotate(720deg)}}@media screen{#sidebar{background-color:#2f3236;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPgo8cmVjdCB3aWR0aD0iNCIgaGVpZ2h0PSI0IiBmaWxsPSIjNDAzYzNmIj48L3JlY3Q+CjxwYXRoIGQ9Ik0wIDBMNCA0Wk00IDBMMCA0WiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2U9IiMxZTI5MmQiPjwvcGF0aD4KPC9zdmc+")}#outline{font-family:Georgia,Times,"Times New Roman",serif;font-size:13px;margin:2em 1em}#outline ul{padding:0}#outline li{list-style-type:none;margin:1em 0}#outline li>ul{margin-left:1em}#outline a,#outline a:visited,#outline a:hover,#outline a:active{line-height:1.2;color:#e8e8e8;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;display:block;overflow:hidden;outline:0}#outline a:hover{color:#0cf}#page-container{background-color:#9e9e9e;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1IiBoZWlnaHQ9IjUiPgo8cmVjdCB3aWR0aD0iNSIgaGVpZ2h0PSI1IiBmaWxsPSIjOWU5ZTllIj48L3JlY3Q+CjxwYXRoIGQ9Ik0wIDVMNSAwWk02IDRMNCA2Wk0tMSAxTDEgLTFaIiBzdHJva2U9IiM4ODgiIHN0cm9rZS13aWR0aD0iMSI+PC9wYXRoPgo8L3N2Zz4=");-webkit-transition:left 500ms;transition:left 500ms}.pf{margin:13px auto;box-shadow:1px 1px 3px 1px #333;border-collapse:separate}.pc.opened{-webkit-animation:fadein 100ms;animation:fadein 100ms}.loading-indicator.active{-webkit-animation:swing 1.5s ease-in-out .01s infinite alternate none;animation:swing 1.5s ease-in-out .01s infinite alternate none}.checked{background:no-repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3goQDSYgDiGofgAAAslJREFUOMvtlM9LFGEYx7/vvOPM6ywuuyPFihWFBUsdNnA6KLIh+QPx4KWExULdHQ/9A9EfUodYmATDYg/iRewQzklFWxcEBcGgEplDkDtI6sw4PzrIbrOuedBb9MALD7zv+3m+z4/3Bf7bZS2bzQIAcrmcMDExcTeXy10DAFVVAQDksgFUVZ1ljD3yfd+0LOuFpmnvVVW9GHhkZAQcxwkNDQ2FSCQyRMgJxnVdy7KstKZpn7nwha6urqqfTqfPBAJAuVymlNLXoigOhfd5nmeiKL5TVTV+lmIKwAOA7u5u6Lped2BsbOwjY6yf4zgQQkAIAcedaPR9H67r3uYBQFEUFItFtLe332lpaVkUBOHK3t5eRtf1DwAwODiIubk5DA8PM8bYW1EU+wEgCIJqsCAIQAiB7/u253k2BQDDMJBKpa4mEon5eDx+UxAESJL0uK2t7XosFlvSdf0QAEmlUnlRFJ9Waho2Qghc1/U9z3uWz+eX+Wr+lL6SZfleEAQIggA8z6OpqSknimIvYyybSCReMsZ6TislhCAIAti2Dc/zejVNWwCAavN8339j27YbTg0AGGM3WltbP4WhlRWq6Q/btrs1TVsYHx+vNgqKoqBUKn2NRqPFxsbGJzzP05puUlpt0ukyOI6z7zjOwNTU1OLo6CgmJyf/gA3DgKIoWF1d/cIY24/FYgOU0pp0z/Ityzo8Pj5OTk9PbwHA+vp6zWghDC+VSiuRSOQgGo32UErJ38CO42wdHR09LBQK3zKZDDY2NupmFmF4R0cHVlZWlmRZ/iVJUn9FeWWcCCE4ODjYtG27Z2Zm5juAOmgdGAB2d3cBADs7O8uSJN2SZfl+WKlpmpumaT6Yn58vn/fs6XmbhmHMNjc3tzDGFI7jYJrm5vb29sDa2trPC/9aiqJUy5pOp4f6+vqeJ5PJBAB0dnZe/t8NBajx/z37Df5OGX8d13xzAAAAAElFTkSuQmCC)}}</style>
<style type="text/css">
.ff0{font-family:sans-serif;visibility:hidden;}
@font-face{font-family:ff1;src:url('data:application/font-woff;base64,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')format("woff");}.ff1{font-family:ff1;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff2;src:url('data:application/font-woff;base64,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')format("woff");}.ff2{font-family:ff2;line-height:0.727000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff3;src:url('data:application/font-woff;base64,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')format("woff");}.ff3{font-family:ff3;line-height:0.704000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff4;src:url('data:application/font-woff;base64,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')format("woff");}.ff4{font-family:ff4;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff5;src:url('data:application/font-woff;base64,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')format("woff");}.ff5{font-family:ff5;line-height:0.915000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff6;src:url('data:application/font-woff;base64,d09GRgABAAAAAB8kAA4AAAAAL/AAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAfCAAAABoAAAAcpiahdkdERUYAAB7sAAAAHAAAAB4AJwBdT1MvMgAAAbgAAABGAAAAVlWb/qpjbWFwAAACmAAAAOsAAAGiNr6Ex2N2dCAAAAOEAAAABAAAAAQAIQJ5Z2FzcAAAHuQAAAAIAAAACP//AANnbHlmAAAEOAAAGGQAACcQVd09wWhlYWQAAAFEAAAANAAAADYsTxq2aGhlYQAAAXgAAAAfAAAAJATOASFobXR4AAACAAAAAJUAAAC2D9wH7WxvY2EAAAOIAAAAsAAAALCNN5eCbWF4cAAAAZgAAAAfAAAAIACeAINuYW1lAAAcnAAAAakAAAL6zcenCnBvc3QAAB5IAAAAnAAAANAIkAk7eJxjYGRgYGBiZPs4M3JfPL/NVwZ55hdAEYanTa9rYfT/P/+lmSSZtgG5HAxMIFEApQgO5XicY2BkYGDa9l8aSPL+//P/C5MkA1AEBbAAAJONBfEAeJxjYGRgYAhnCGJgZQABJiBmZACJOTDogQQAFMEBIgB4nGNgZOJlnMDAysDA1MW0h4GBoQdCMz5gMGRkAooysHIygEEDAwMzAxIISHNNAVIKCsJM2/5LA1VuY3gK5DOC5ADCtQqRAAB4nCWOMQrCUBBEH8EuCRjFqN8ISuQTJYiEBH9SW5hGW6/gKTxROg/hKWy8hqAj7jJ/h9k/w3ohS1Re+Ac3UnVCx4UDljuOBw0FV0py5norzUrqb2eFnBljMoYYOS0xZxZE4k5KLIehxwBf/57KWksvCGhZsWejzIATO0Y0n7d4LWRKODIVm9CXz+jOmpewxX0B51UTzwAAAHicY2BgYGaAYBkGRgYQmAPkMYL5LAwNYFoAKMLDoMCgzKDGYMZgx+DJEMAQwRDLEM9Qy7BbQfj/f6AqBQYlBlUGDQYLBgcGH4YghmigbCJE9v/j/4/+P/z/4P/9//f+3/l/+//N/zf+X/8/64Ez1EacgJGNAa6EkQlIMKErADmdhZWBjZ2Bg5OLm4eXj19AUEhYRFSMQVxCUkpaRpZBTl5BUUlZRVVNnYFBQ1NLW4dBV0/fwNDImIHBxNSMwZzBwtLK2sbWzt7B0cnZxdXN3cPTy9vH188/IDAoOAS/+0gBoVA6jER9ALiiMxoAACECeQAAACoAKgAqACoAVACiAPYBaAGYAcYCDgIsAk4CYAJ2ApYCugLmAyYDdgO0A/YENgR4BLwE4gUSBTgFVAV6Bb4GAgY+BnwGpgbyBzYHggfYB/oILAiQCN4JJAlSCa4KDApICnoKugsUC2ALhAuiC8YL2AwgDFoMjgzIDP4NOg2oDeIODg5IDpQOuA8eD1YPeA+0D/YQMhCMEMwRCBFGEawR9BJMEowS1BLmEzQTdhOIeJyNWglwHNWZ7tdztObqY6a7Z3qOHs2hmWldY82h0eWRLOu2JUuWZGzLEiZe2xhfEGOIL8DYEBIqGEyyxVUkhhQhlYLEBhuWSlEbUrWwsJVNwAEnWbLmCMHZ2sRQQFhij/Z/r3tGkm1SUdW8fv169N7330cPRVMRikK19EOUiWKoxuOISnecYMzU/2aOWy3/1XHCRMOUOm7Cyxa8fIKxogsdJxBezwoRIZkVYhFk+/Dll+mHLm6K0KspiqZuRQPoW/QOykF5YXfGGoumUaI5m5E5NDdHd7vokErD4ObVZ+bN6cJ/xOKvhfy+sHGl8J4x2OkcvYHKU60UFRfryLaJfK4Qq0yiuXZkjPph2fI1g7+fTcaYLDqXXs4zIU7kN+uXZDrd5F6aTg9zpggnm9jNxjWRTi9yd9+82b35XN9eTWIt+/Sx72jfHk1WdpGh7+jRo5SFis0+BdhOAb0BwNkAGCmPqKPCAAoigwyMCN+7RWs0kWvOoFwiapVEOdNM4RlMfpWpiWfx531r6c8OHytZkeDycmIuM5TJDJXeFWVREiXkg0ES6UUtw8vb4KMx3MXhkMQyHH08LF389+uHh68fRntDtbWhsKaV6A5N69AokHBw9lP0J5BLC9VDjQE/CRcZOZsp5LIZFUkYc9JAmimigoFfEhnZ21yINqI88Ba+mMw10jEM3dtsSiQTSRb+VQUuoz+lwh2Kvz4VtQRNNj7T0NbeurTQE0Nq1BQs1i6q3yi0BtudLJda53Rxf6WtvNMT4nvMQkC1J8Qqv5RG96qPdNa1tYZpnqsd6utb3bG4PlJjmhjpW7aysHJL47rCwzTHqjTXz3hUsT7VVlheetbblJFr41GhJk4h6qnZp9FJkEWYoixEBkmgomgiZLCIYWlguFel0UlWEK+uGatb3JO1C6yVsXeOBcevclRZm22e4dyNRwYOr+5WPTbGYWHq9m5vmT7eXmVxwP6rYf/1sH8Q84816cwqAmca6aTBL6+M1pN9ec67btRRvaKV53h8GMoYu3Jc8Zk11T1f2ZCwc+Q4UHHYu4dai16hbVQTRdUQWSSSgDoKBzAwFFEnMo4II7hmQC4FGDik0nDkKx7WHpi0mbpN+1M2xrZtu8/D2tht5F7ZxhQaHeybTonPWpIra2tXJgciNtZiaW93eZySrbO85ubazUFfFaPjSVBj6APaQ3ngDnQFoCxGxL7g8BDKog/S9/Tdk8YDmuw7kk4fIYP+v8/O7kZrqQOUaNCC2dRcmDMKtHZDzCkG2zm73R+PhqJNysA60SlWiUVTLKjUtOA9WhCHTqNJCsMRY5FoLhtBp9Oll9JpVIQT+/B3XoGhF85xzJ1Dtu+NB5Qa/Cn6EvEAfOC7bWCnr4PsOCy7hTaJXq8qnXLJnFiFhvCFvt/qvjgSlFirmz4RlCjigzJgP78lfk3CO8ydxlQsGf32llWTt+JP76qvrpq4aQI13Xnq5F3wObD1m3dft+ORRwDHFvjvF2CfIMZch4hs25EA+xEmwY6SgA0SvZD6W4pzOaey+UhNj2YX1SmwG1VVWY5GT9SrIZqZ8mkXP6c5nec5GM7AvvU6LyKwXSdqzucSYKyMLM0DDKoDxpCFc/ENOsP7Sk9p3Nu7pru1JQ42IPChnatmDm73/bPvzzQveB2aTwizrhfWX9XZXxtzSKLiVbo3bl29+Rp5v+jmWEkk59cDf87C+a3zZEHOws4B4wBasRNpxkQSWATVHCgrfBOd3XP1zC3+hOIUVqWWrBzrbQSalXRHpHZpdjRsC0SDG9eMb6nTssWnB68f6/b6/G6PMxxY1rRoGFyDaDeZAtF8NB22uUXF5813jbfVrvB7J7H8QgDyL/ROKknV6pyXdLdXEUFe1wgPngMeIoSkYEJ/SY0UAUXqWSyN4gUfb3vfxnqCCj8Cq0///mV1G/ZKWCzbeJ/sQps4K6+UvkdzApouPa7LBnhzBuJXeqGeYt+q8waYAcvAHgEeRAxcEtHNM7fPjN8Q4oWAq3p111Rv20St081xNO9DLozqfHP35I4Xx29a2+mXfZLH1TnWnp/McJzLhew+ASN7MfQ1TH8eMLwF8lGpOgNFI11hPaGcaIqh0bqHx+jQW/smUv2dNce2Lu0Gwdj5ZN+N9q7J8V29y9pbV1TFV7es/NnqG6uX3jJ534nFtbICErHzeze23TTZNr4kXefZMYr101TRDxmyjvp5fCgQpSgrQNI4GqzJOzdFZw9Mr7tltL29e/fTu5d0tI+Oj7S2DY/uGGXHu5dMXLX/qqeHdu4cap4QPP11ndes76rrE4WJc6mOjlRte/snTcuWL8oNDs7jQTXVaNgw4UFFEnMuSqWBCUkDAOHCA5sbOgMO4IBNru/fUoU5cMuqRG+xZoRXovnWVcvaO4ZRy5Fn5bjKYS4IDuHgDHBh9Y3q0ltt2XS4brSzbbyH+BLit9CPjRxpnkYIV/Ri5Q+63nBnpWfKfo0mvnaI7KUu3Msz53kv39IyFXCKYt4VrY4F1MTcxvcOTotO3h7MJxR/PEP8MHji03R9xZcnaxK5Qo2hvi4ko9Oyy86XnnHLaJC3u2Rf6R0U9k3xHvuvXHHuP+0e3sOdPMkRuhPUz9EH6Bj4dG7Oq8tl7/5BQ+mhhixam82Wnsg2oE3oWF/fA+DoF2CgRMZi0NWAdLK8FsBQeo4cjsKld3wYEBpGPfOO92A8BEP97Begh1uo+Jw18rCJILJ0mXXeityxO07kKrfo7M7OrQ8/vOUn4UUNUtuqyY6oGugd3b9vZUfaLiZammPR5nw8OuorPouqnimdWby2XrzhqoldYv+RbVvuq7N/86bRFR1to3o8CQBzPwJ/pOnWYHhH8MmQqRIHwCLimgCCp0jDiteT8cpJB0If1W1ysRznkb2PeWUPx7GuTXWCtWaPmefjAmfeU2MVftjdrao0y3Isfe21NFxYWhVtNO10CyaT233xUxPzY9RW+jewS6yB74Jv8oFdaoQj5FgISTFymWeZxGc2u40JendmxWcpLRDQUu+OzLQ3tfetzbQe2LykS2pr/eatHT/o2qyG0bmwenVH46DArvqf6OJXe0r/PbH8XT1epcAW3wdbrFvgE71FOg+XEKRXCDvEZCOq2CAWBnp/9+SGI0e+MthqtZqcUC8IPMubaPtAunfr1r7alRa6OvZk3/ZTX7/z1CKHCzJo7W4Xyzrszvae+7dtv791SQjzHnIa9Aeg2U2kcDnFDCZRwGb/h33rf6Fpsqxpv1i/r3ftivXrV6xFDfuPY9LU8L8cWP9gyXsfoccPw2ewZ+tc/DV2BIcuGwQlIIeSjMhbXsrHpEi+HIw/g2C8W9NUVdPQboUD8ryOTw+ZOAjDNM/7HIeQg6xBTNa5K/gGgUBJzL+meFySOA03cuydXrJGcOFc9U+AK0ty1i/HMC8azsMtwf/i8764aw7DXTkceB7StEgEUB5QOPSRDuHNeRDeJEGRcEnwkXwS5H0e5F3A/IFDsYJjlZ8nelQR/AKxx8rFBzrP8TzNVwt04+DU4cNTS3JQTmAVCJscvbHF11xdrCvaajG4m7XzEI+fBCTwl8fa0BDUVSE00H50x7b7V4xifBiXbMht6TwrxMnApekBYQnJDYzonM3H5qoivKKnbZ+lbsYIlNMKAYKTBkXB44JlMldIQoeBvPtuOYcAhsGI7159Va92WLXkJUkeolbA8CJg9WKsl6iYgQC9qJXe07Rt20A0IXIFKahYU8KwD+xRDXt8CHvE5vR0IXn6RhWN/BA08i6Mv6YGj49pWstHFRWsAMab97KsCysdogQY/gZnDMzLcbNCjKUZvbBpNCVjwnz2ZoUyK71ub7a5ExVpggR0AX8P/S21MsW5RWRpqqddssdhkZDXr5gR5J/6EzxpSdqnGcSIS62MJLYYq5AwgxNEb/sePGSWOWuRHlixki/FwCfqD87hma90LhLteJV3OfAasJulKrZzHugo6PUyic7gk0wxoaIcOmyhogqy15OdryrofEoRFJ5zW59HRPTXVUSf6vF6q2AVsxWv0j1qyRRgTbyAPinVlIUPCGF0eUtO9DtdNfT40QL2dJrUEYuIZZsBgjlXNAMyK5PTDYjBSRzJvwvN6LTZ7c21Z7JtOa/bjOdt2URTY8DnsNG9TkdzR1fe5nDacl1L8lUO1DQyPRJXrFYlPjL9yPQKmJqcQo3WP9J0VzqpBOsab78nm6yO1jUTLNj3nSUxpBpHaCuJDwudCWZNOXCc3TJxABzcQd3PnR2vGey+7rpu9OnRHc+HVd2t/WHd8k90OuXZT2k77N0BFbKRgWBWgxgSl+fwc5wnUQuqcUlU6WwGxxTaOJ62N9Tm/S4rbXNUN41caqXHJ7enGmKsDVmcdg+KxB4d6BoY6JqO9zTKTS1+r98efHOhqW5cWjOsBCPefr8/wjYAmpXdb87l/Dt0v4JRY7+2GBGzgmAue/XUP41I/ksi3zz3Z9bdXxjhr6IzW8avXcxwxNdxPI1M9Y39Ld07d3X0bhmbLFisnAM/Uc0mi+jPRXI9jdGxrnxo0RN9Wxv9onYY3J7T6WgPhnvq1vgCwupc91fSbt5FHgQFd50it6eiGbubk4O5Siz7GHheNz9mXK7zUvkZKVrAV3xMHMNhEh+ewkPuDrLCK+jrc2ECu7OybufJ0qDCQ5BAlBlkXQXnxiv2BrGhrD7EL5GIUFmiqzR15wM7DV0abKgfIlO6N1x6Ymr//im0FutT6UfLJiaH0GSY+Hv37OfoCzij1qDNhPM+bNRlCyZUQXKVbS54KpHnC94jHza7ecHN85bDsofXNmm8W77GZUHWyLDsxvd0LziPi3918yaT4AY6DBdT2pePJ+8AsHAP5ztmP6cRnN+Jz4+ZiD7TyRhLeprgWqLzIopHlrJFGuc9XlBjgqii4DRKDFjiEQYFQqAQBZM9FLcMoBptBfEvuSpEB3y0Xa228W43jRBXT9R7hQZe5uKnMYXe/Q3R/zkjxmiHGiZB5sYiHzx0nVn2ot6JdbJ/FxrG6k30IWD4wdb5/jzJLLQ9T7IiKGCgtzDHzzrEeMDsz2vXpjiO27AOojieupzyHV/zanjKssP9HM+lroVc64ZveTW9zfHSSxVTq3onTCZHj+KlsHq29FfA9fvZp9B79CkcDy0YSALXz5fE4/dSJxWO953EbHngARjzkDPRz+m18cUbwJ0u6A2RvmGyXFlAefO6yEls6SSDL2gZs4iVAvQzrB0uF4dZ+F8N/rexjMF6pYggocb552M8tfrx9BE86vlRy+wadHr2u7jfZb6033UNbneRHtQXNIOep2qojJFFlVu2zQXSRGCRpOdzOZLcgbEk87hBi0uZIk0znOCe9LatHpp6/Bs9HTLLWVGQ8/jv27BBSqZ+uHV/W0M+7nabwqC11YnR5r5hOptFyGxVJJ88OLP4TNXghClTo9YJVV4e43FCLYVziQCVKns5I6ur+PwQmusogHcjtfSH+8a7MySPa0hpgwrXPDi6q3e4kB7qyBcmz8zcluVBIVgXuohzx1NNB9d1z/TUDzZMrcN8GoQzXwcexAkH9JoNu069gZ2LRUmXF9OLm9Kv87GhRdO3KrmZxd/xe+pQR7o3wk539QctLBvbbovUqYem4oP99YOS0mSLtzTJPdMdbBWmLQ68poC2ULlfBAfN5ar5SnEkYB7PlYjNNKUNBp3NA6M37h3vzuoENqQe6k4XJoeb873hsKi2HFw3c1vDo5i6kumO/rqedb3dM1NwZgFo+yXQFtSzM0Kd0aKBeQRHckKWEd3RL8XkUOP6O29ZM73R6nLYS286r24f8WPS+q196dyoY7sjpgUPPX9oz5SLZ1BxCGj7al/bYAH4iP3fSaiD60kFhGUGnAuh7JzxSAtSzHY9TKGTgWqJEbw14l6sy3s3alrpI03buDGl/dN013q6QfRJbrPJFQukiVd5DSeeKK+G88V+0gcKzQbQRfQC1COd1Ei5Y5EstyiTVglHRhlnguSlhN6Z0j+Y8fP7U5jdHv11BGM0ii4qnMNnjij+9b35GityOKUqqW8KCvO7XrpryCtWw3J9ur0m/mxLKtmKP9uiA5nG1mq3tunoJnRYlHi3ia2rXzqjcC4ZquaQp7O6c2K8a0VDWEuGtOYlV6uxyOFUR3stfEo/VxOcyez010fzeaybTqw4oDMNFT+Juaar/pUSImIc+BFNpR7U4IBE44p6LfXdlFavK05+5PZ67AzD76W1vp7j4UpF9UL+3g/1/Ajz8GV6mpJwh7PmEpHp+kmX3zm9rJV+o2l7btC0exRui3ZPqDYUqsXbozyuJEvP0Sa8QmrkRbNBdAPsW41t20LedszvWhbmorAsNZcPuN7mT3ZrdwfcQgCp/uaA//aU9ihEfnJQvdSYTfmXS4oi2kzmRKyAHiSkGEcC/3Bn/QLwr21hnJG+PNuWhMKCwoXxgope0G5KcR755tEmUqjioYlMlyjcY6SKgeI1tu87YU2vDh4eGluYbQMrvveAXtbsegnHB8D1xpXqrrlOMXojVXoupR3UCb5db9UbwiqZ9Ppt9gIw1oxOYpnN0VdWkAX10BUXhbl602vYgkqT79BmbZnGcy63J9KEk5MFN6s1SF7wpNrpYlEynffWFMMp1gxLepw91xgf7HyG5CsL73CBlMczmmXjuVykoPIfl2sjoutAS/0/qOvS31X1oPNKqg5uwxMkmk5TreAb3wDfWEW5SY2hv2Dwzr18eWPPk3v2PJkb2zE2ev0oyr9w8LaZ6UO/WbpmzdLeDRt0W3HORtGHgDlc6UAnr1ioSF8Ss+YB9rOXRa1fYMy0Rw27lQUxCyiejdIKnBvFPUfLvC7DXEAhMczQJdOCeKKkfkA0uDA6vue2VUNZxLAurwPr86NL84vXjLe0Dv0r0d23Og6umz5YcHOCRRIvvkFz6MZk85rpnqXTU0bd/0fAUFvxuWVJgUJfZlfEM6k0+qMiuH1o8uqd4Ob/hmGMjeFxh8L1bwhpbgbd7PH53TcMHwjr5pPXzSc65pI8up4MgNxeA7l1k4hm0jMWow4qF0GQADea9Te13gXdP50NYUjDXrMpWl/DSM6p4FLH7TKHNnR1+dLhQFwrRhTGlxxY1Flv9RkNQWSdWVK8pufYAb66JuhOJLRroM5w8WtSqicgMGYr4/Fpflcg6ndLkoabZQ6noyXqrYUqEGNWAPPP6Fr8lqAGaxp+86nrt9E1KzskvbosGg/AC/xsZu/o6pR2FSl7vo9Z9X2TKxrgqyMmqNwE+pZi35Kln6jhlaTuWYm59WfWE+JssaCDdbEuw7Zw7oF+XIkjeptsnsMV9HPpMjDDz0PqAUdmeu/RowdE4SAXSSnlJCQMiT6X+BqiiFP6mBdkO+Opr/41uX0OzvXNXkCfwLmaXn9VSqNLWl8BNK/zhT5JqbssIgcEeay7VOxdd2O6g9u3B/EV36B71dKPoHCleR5NlPtbpRdRt+52Cc08nH0Bzu6dX5dBopOMWRmiDbRRohlASH/cky3qv/eAejrrwagqfZcLnODpMJlFQXVaEqAQXtYd4tw2E93hEXDPfBfuobOuphwyaSZHSBFYnwVlmvRV/BDdh4u3n7Auh+A4HK1duUi2OO0ONKq302kuCE/fZO+zyr7MRAjVkgXiHI16CWgpfFm91I4Kf69a8pJqaXcK0vU1q0QBmKhpqf03pTS8xgvLhwRj7au3pYwYtm8f8djhY9+GfAvuN27E92H128dwPQ+xHMu1WJaree4dJNNcwD8uyF0mZczS5s5LRf2wmQmGs8F42id6fJZsyOqxMuZ7whWxK9MeqNbcAwtk3+pwZ6Ohpojo83lkU8FRkGSTHW0sa8L5HBPN/XqeLuDfJf0O8JLMm4kY743RJQ0Hkh8yaK55/ju5dAeoIcOhlv8r9x0myELpFeTSm5YxKyihy8mhlJ+YYKPC6wulMwmjaY4g1jwF8f4U7plbjIYMmBp4TMIz4BcgwGpn/GyGAUcKCSy4LSjSM+gNUKC1BZ9ior8edVf1JxQHEn8CCuWu2usx0S1tFm/HomgOaFddtQH5ibwlDC7LoYTXjlg3AhN4NlW15HAmUt11jBd8TgR43gM8GuBhMB7wA7mMhLS+vng6Tf8ondZ9RhlzwfDvYDQAyHitDLCLZuJ0C5h7YEu6TkKSDQmEjEG7q/owUs8JJ8u7q2rbghxtDikAdnFThGedU4SgO6Oo6RKwyOaQXM4TjFjLhruOCQLsoeq0+aUf5K0k7jZSY+ht2gP5HekoccavL+b9pEVmrriK3nb81sHYXNxPf8q5bIzjLfaxSxdQRnD81CZwguvxx11wsb3A8pet/CO/J/l/Wlq7bnicnVLBTiJBEH09AnGNMd42m3ioo2Yzk2FUEvWmERPioAEhXhttYAJOmwFD+Aj/xHj3W/YX9iP20dPrAW9OZ6peVb+qrqpuADt4h0L59T+xwqb66XGAmoo83sBv9epxBbvqj8dV7ARbHtewG5yRqSo/aL25qBVW5Fc9DrCtxOMN9NWxxxWI+vC4ij311+MaJPiFC1g8Y4kCGUYYYw5BgpjrECFXiU/oHZAlOEdE2YLGAyaMXWBGndGnkePR7UVIHavt9kvmirFPO3eZDE/SmGJIyzp5R989dQ9dXKJDKbiivqHnltYBM+LCPi+LbDSeSxLHh2FIeSKDpZxH0tIPE7uYTTLR+aO0ojSStl3Qmcm+zWVgxno6FDuUO3Mvve5lpytXnZvebfeAea9ZcOqKs6izXVynqc1tnWjVQ4EnVy3atnjS1E3HnTtdcGzGDS1ipOCU/3q+kI0Y8l6YRDOiZDXor/sRJ7TQtPm8aYuRkSSK5VT+VxF2zOhlqgu6GmGdXSeNrzWvn4H16NVbNNyY8S7KeyhLjnFEjL4pZhknxaPjI/lO/n+IDn3lAAAAeJxdzlsvwgEAQPFfGctQbiVLZHLNJhqFLdZcQhekkFy+SF/Ioy+Y/3rsvJztPB1hQwZ914FCRnkd1rAx4yZETJoybUZUzKw58xYsiktYkrQsZUXaqjUZ6zZkbdqybceuPTn7DuQdOlJw7ERRyakz58ouXKq4Ck5u3Kq6c+9BTV1D06Mnz1petHWCrzfvuj70fPry7cevv397YhPLAAAAAf//AAJ4nGNgZGBg4AFiMSBmYmAEwjAgZgHzGAAHUACFeJxjYGBgZACC2wqnqkH006bXtTAaAE9iB+AAAA==')format("woff");}.ff6{font-family:ff6;line-height:0.923000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff7;src:url('data:application/font-woff;base64,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')format("woff");}.ff7{font-family:ff7;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff8;src:url('data:application/font-woff;base64,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')format("woff");}.ff8{font-family:ff8;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff9;src:url('data:application/font-woff;base64,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')format("woff");}.ff9{font-family:ff9;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ffa;src:url('data:application/font-woff;base64,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')format("woff");}.ffa{font-family:ffa;line-height:0.922000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ffb;src:url('data:application/font-woff;base64,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')format("woff");}.ffb{font-family:ffb;line-height:0.922000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ffc;src:url('data:application/font-woff;base64,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')format("woff");}.ffc{font-family:ffc;line-height:0.922000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ffd;src:url('data:application/font-woff;base64,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')format("woff");}.ffd{font-family:ffd;line-height:0.922000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ffe;src:url('data:application/font-woff;base64,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')format("woff");}.ffe{font-family:ffe;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:fff;src:url('data:application/font-woff;base64,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')format("woff");}.fff{font-family:fff;line-height:0.773000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff10;src:url('data:application/font-woff;base64,d09GRgABAAAAAATAAA0AAAAABtgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEpAAAABoAAAAcpiahmkdERUYAAASIAAAAGwAAAB4AJwALT1MvMgAAAZwAAAA/AAAAVlVXVldjbWFwAAAB8AAAAEYAAAFKzKIgqGdhc3AAAASAAAAACAAAAAj//wADZ2x5ZgAAAkQAAADSAAAA4MubV/JoZWFkAAABMAAAADAAAAA2LgwbnWhoZWEAAAFgAAAAGQAAACQHQgPuaG10eAAAAdwAAAAUAAAAFAcqAD5sb2NhAAACOAAAAAwAAAAMACgAmG1heHAAAAF8AAAAHQAAACAASQBDbmFtZQAAAxgAAAFGAAACZKcJF/pwb3N0AAAEYAAAAB4AAAA0TLakpHicY2BkYGBgZHBUn3LxWTy/zVcGbuYXQBGGp02v+5Fp5hfMkUCKg4EJxAMAeG4MXnicY2BkYGCOZAAC5hdQkpEBFbACADPuAjoAAAB4nGNgZGBgYGVwYGBiAAEQycgAEnMA8xkACS4AjQAAAHicY2Bk/MI4gYGVgYGpi2kPAwNDD4RmfMBgyMgEFGVgZWaAAUYBBgQISHNNAVIKz8KZI0F8CMnACCIA6SYJUgAB9AA+AAAAAAFNAAAAAQAAA+gAAHicY2BgYGaAYBkGRgYQcAHyGMF8FgYNIM0GpBkZmBgUnoX//w/kg+n/jyXXQtUDASMbA5zDyAQkmBhQASPEiuEMACjNCjEAAAAAABQAFAAUABQAcHicHcsxCsJAEIXhmSxMJAHDxmw6hRg3lopuYiEaIUewskkRW3ttPIC9d7C38BxWNmIlgmcQWVwzxcCD/wML5gB4YStgYANMxjxmPOL7zyfH3dx6fF9s9T0BWGCOvU0nITdCBBRH3STlKhtHozYGZpHgQWhWNkOVTXEUtripugNEMi9J1QT7Sd2HzC8LPSzKssAD53or01TiVSqn0Ws4N+E13UofqUk5EW7WjvCw7QlcnmtxLUq/5yuph392tl0X7/rpidrQgsg2qHI6QsAPxO4tjgAAeJyNkD1Ow0AQhd/mT4JIiAKlnorOxnbhIlRWoqShChIlYMkrJ1LijdZRopTcAHEKREHFAag4F8+blUhBEVur+Wbn7+0AuMAnFA7fDZ49K/Tx7rmFLr49t3Gtrjx30Ff3nru4VC+ee7z/YKbqnNF7dFUNKwzw6rmFc3x5buMOP547GKhbz12IevLc4/0bRjBYYw+LBUrMsYFgjBxbaNKUVKFgXJAgQowUITnDkr8cVdXO07SatqkumImRWe/topxvZJxvtUzzqthLEsVpKNlyKS5Ui9W1tltdsGBCPRX7Zdi5bgYrWkxMtcl2ujYrOjN32yjDzKzy6q+qsZaKtNMbUrFgyPN/10MsRcB3Be59CT03a2JsqSUJIxnK0Wx6aRAHSZSkp0l9cOuouaYmVziiWWLorTBB23phKomiOOSRk9r+AvZ2Z2sAAHicY2BiwA9YgZiRgYmBmZGJvTQv09XM1BwAC8ICSwAAAAAAAf//AAJ4nGNgZGBg4AFiMSBmYmAEQhYwBvEYAAPKADMAeJxjYGBgZACC2wqnqkH006bX/TAaAFAWCAQAAA==')format("woff");}.ff10{font-family:ff10;line-height:0.857000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff11;src:url('data:application/font-woff;base64,d09GRgABAAAAAATEAA0AAAAABzAAAgADAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEqAAAABoAAAAcpiahnkdERUYAAASMAAAAGwAAAB4AJwALT1MvMgAAAaQAAABGAAAAVlQDXshjbWFwAAACAAAAAEYAAAFKAaMGKGdhc3AAAASEAAAACAAAAAj//wADZ2x5ZgAAAlQAAABSAAAAYKELuVhoZWFkAAABMAAAADMAAAA2LV8av2hoZWEAAAFkAAAAIAAAACQEswOcaG10eAAAAewAAAAUAAAAFAWgAJxsb2NhAAACSAAAAAwAAAAMAAAAMG1heHAAAAGEAAAAHQAAACAASAAhbmFtZQAAAqgAAAG2AAADQtz+SpZwb3N0AAAEYAAAACEAAAAs/5n30XicY2BkYGBgYjji264pEc9v85WBm/kFUIThadPriXB6zv+fTHMZfwO5HEC1QAAAgf0OcQB4nGNgZGBg/P3/JwMDsxUDEDDNZUhhkGRABqwAcsoEVHicY2BkYGBgZZBjANEMDExAzAhmO4D5DAAFxQBqAAAAeJxjYGScyziBgZWBgamLaQ+DIkMPiP7fw/iAwZCRCSjKwMrMAAMIFhAEpLmmACkFhuuMv///ZGBg/M3ADuQzguQAXfcNcgAAARgAAAAAAAABTQAAAAEAAAM6AJx4nGNgYGBmgGAZBkYGEHAB8hjBfBYGDSDNBqQZGZgYFBiu//8P5IPp/4//60LVAwEjGwOcw8gEJJgYUAEjxIrhDACz5gnLAAAAAAAAAAAAAAAAADB4nGNgZJjz/yfTXMbfDLIMDCoibEr6jOxsSmom9ozqaqYmZkbyjOZmxkZiIvyM4kxzeUV4L18CEryXL/OC2Jd5OblAHCmE0BWoEESeAQAUVRetAAB4nK1Sy2rbQBQ9o9iGkOJlV1lc2k0CkZBlME1WJSE2mMgOVlyyHSWyLWxrgqRgvOgXJeSP+i89kqaFlpJVNejec9+PGQBdvEGh+b79xgpd9dliBx311eID9NSLxS18dI4sbqPr/PLpUP+dnqp1SOm1jqqwwrFqW+zggwosPkCsRha3cKZ+WNzGsfPJ4g7OnCmuYPCEPXKkWGKFEoIAPk8fLk+Dz6mN6SW4hEc6hsYD1ozdoSBPqdPI8FjbPIS116S2N56VxwnlrM6UsJLGBgtKpqZ31N2TzxHhGjNSwYh8Ss0tpVNmxJV52ufpclVK4Pt91yU9l3gvl56M9cPa7Ip1Kjp7lLEXejIxOypTOTGZxMlKbxZiFnKX3Ms8up5FMppN57fRKfPesOGQDZVsK+KYW7Zo2F6BLzSGoS5X0X4bm01BuZoqp0vVPyYm32ryYT1aWfOci0zqNXpcneCC/3sVXI6ZMOaZsmZ0EzGgvmcvIKCEocnKocmXiQSeLxfyZ1/uLFk+b3ROw8DtcTPB4P25/q6Kf+erXnBCc8EbbG6vGat6H0Jjkhcp98uW/L78n4o/AYCJk00AAHicY2BiYPj/8dvu/3MZVBiwAVYgZmRgYmBm+AAAy9QGXwAAAAAAAAH//wACeJxjYGRgYOABYjEgZmJgBEIWMAbxGAADygAzAHicY2BgYGQAgtsKp6pB9NOm1xNhNABQKggIAAA=')format("woff");}.ff11{font-family:ff11;line-height:0.514000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff12;src:url('data:application/font-woff;base64,d09GRgABAAAAAASUAA0AAAAABrgAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEeAAAABoAAAAcpiahnkdERUYAAARcAAAAGwAAAB4AJwALT1MvMgAAAaQAAAA/AAAAVlStXttjbWFwAAAB+AAAAEwAAAFKAJ0Kq2dhc3AAAARUAAAACAAAAAj//wADZ2x5ZgAAAlAAAAA8AAAAPDwqdYloZWFkAAABMAAAADMAAAA2Lg8bvGhoZWEAAAFkAAAAIAAAACQGBwLUaG10eAAAAeQAAAAUAAAAFAU8AKlsb2NhAAACRAAAAAwAAAAMAAAAHm1heHAAAAGEAAAAHQAAACAASAATbmFtZQAAAowAAAGoAAAC7j/8sZ9wb3N0AAAENAAAAB8AAAAs/5wAXXicY2BkYGBgYmTzO3BqRjy/zVcGbuYXQBGGp02vJ8LplQwMzI5M64FcDgYmkCgAdSoMfgB4nGNgZGBgWs8ABEzXGBj+T2V2ZEhhEGVABqwAWegD4XicY2BkYGBgZRBgANEMDExAzAhmO4D5DAAEZwBcAAAAeJxjYGTMZpzAwMrAwNTFtIdBlqEHRP+fy/iAwZCRCSjKwMrMAAOMDEggIM01BUgpMIQwrQfxISREDQAf0QozAAEYAAAAAAAAAU0AAAABAAAC1gCpeJxjYGBgZoBgGQZGBhBwAfIYwXwWBg0gzQakGRmYGBQYQv7/B/LB9P/H/zdA1QMBIxsDnMPIBCSYGFABI8QKUgELGXoGCgAAIa0JTAAAAAAAAAAAAAAAHgABAKkAAANBAq8ADwAAASMiJisBAyMTIyIGKwE3IQMykAYYBl6DZYNeBhgGkA8CiQJpAf2WAmoBRgAAAHiclVLRSuNQED03tl0Eqb74pjKP6pIQoxT1UbFCsa00rfiaaNqG1lxNKqV/sB+z7Iuf4ifsj+zJzUWwb5uQmTPnnpk7MwRAE3+gUD0PX1jhh9q12EFD/bR4A8fql8U1bKtPi+toOsriBrYdn0pV22T022SVWKGp6hY72FL7Fm9gqAKLazhQHxbXsaf+WtzAgbODa2i8YoUcKSaYYgFBAJ/vKVy+Fb4gG1MluIJH20GEJ8yYu0RBn5KLkOHZnHnoGlXPnFfKUnHIODOVEt4UYY4xI23skNwj/QghbjCgFdzS98ncMzpiRVzr11WeTqYLCXz/1HVpLyReyZUnnehpppfFLJUoe5aO1/Wkp5ckUznUmcTJNJqPRY9lmDzKKLwZhHI76I/uwyPWvWPDoRmgwDnDbhhlBUE5QI4X0yp6On+J6NtmioXxOXeWmI153JLgkt/3Yi4niJme4g3vRltqWuRP7HYDRmjrbNHW+SSRwPPlUmwLbj+ep2/vCZmWe8J5g9Z6t+sXYC21/AUTNlpQUa2/atbHGTEekrxIuSBe65/Jfxf/B5gufCd4nGNgYmD4/wWI5zKoMGADrEDMyMDEwMxgDgCMBQP4AAAAAAH//wACeJxjYGRgYOABYjEgZmJgBEIWMAbxGAADygAzAHicY2BgYGQAgtsKp6pB9NOm1xNhNABQKggIAAA=')format("woff");}.ff12{font-family:ff12;line-height:0.687000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff13;src:url('data:application/font-woff;base64,d09GRgABAAAAAAS4AA0AAAAABxwAAgADAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEnAAAABoAAAAcpiahoEdERUYAAASAAAAAGwAAAB4AJwALT1MvMgAAAaQAAABDAAAAVlRDXhVjbWFwAAAB/AAAAEsAAAFKAG0Kw2dhc3AAAAR4AAAACAAAAAj//wADZ2x5ZgAAAlQAAABMAAAATE204D9oZWFkAAABMAAAADMAAAA2LS8awWhoZWEAAAFkAAAAIAAAACQE7QNLaG10eAAAAegAAAAUAAAAFAVwAFNsb2NhAAACSAAAAAwAAAAMAAAAJm1heHAAAAGEAAAAHQAAACAASAAYbmFtZQAAAqAAAAG0AAADQuADbhhwb3N0AAAEVAAAACEAAAAs/373BHicY2BkYGBgYjjyYUb/rXh+m68M3MwvgCIMT5teT4LTwf9vMG1jkgFyOYBqgQAAxYQPIAB4nGNgZGBgkvl/g4GBmYsBCJi2MaQwSDIgA1YAUVcDPnicY2BkYGBgZRBlANEMDExAzAhmO4D5DAAE5ABhAAAAeJxjYGRsZZzAwMrAwNTFtIdBkaEHRP/vYXzAYMjIBBRlYGVmgAFGBiQQkOaaAqQUGGyYZP7fAKqUYdCAqQEAMVALAQABGAAAAAAAAAFNAAAAAQAAAwoAU3icY2BgYGaAYBkGRgYQcAHyGMF8FgYNIM0GpBkZmBgUGGz+/wfywfT/x/9PQNUDASMbA5zDyAQkmBhQASPEClyABY/cUAEABsUJNAAAAAAAAAAAAAAAACYAAQBT/9gCtgIcABQAAAUUBiMiJwEmNDcBNjMyFhUUBw0BFgK2DAgFDf3WExMCKg0FCAwT/fMCDRMUCAwHAQUJGgkBBQcMCAwK+PgKeJytUstq20AUPaPYhtLgZVZZXNpNApGQZDAkq5IQm5jIDnYcsh07si3saIKsYLzoF7X0j/ovPRpNCy0lq2jQvee+HzMA2vgBhfp7+IMV2uqzwx5a6ovDB4jUN4cbOPI+OtxE2/vt06L+Kz1V4wOl7zaqwgrHqumwh0MVO3yAmeo73MCZ+ulwE8feJ4dbOPNGuILBC/YokGGJFUoIYoQ8Hfg8NT6ndkYvwSUC0gE05lgzdocteUadRo4nawuQWK+htdeelccJ5dxmSllJY4MFJWPpPXWP5FNMcI0xqaBPPqLmjtIpM+LKvOyLbLkqJQ7Dju+TnstsL5eBDPR8bXbbdSY6f5JBkAQyNDsqMzkxuczSld4sxCzkPn2U6eR6PJH+eDS9m5wy7y0bTthQybZuSKvWMrYdcXTcJokuVzel3mTziHI1VYFn64ShKZ41ec+OVlpecJGpXWPAeMEF/7cq+BwzZcwrdZrRdUSX+shdQEwJPZOXPVMsU4mDUC7k7778cbp83eiChq4fcTNx9+25/q2K/+erXnBK85aB9e3VY1XvQ2hMi23G/bKlsCPvU/EX+SCP/XicY2BiYPj/8dvu/00MGgzYACsQMzIwMTAzyAMAx9YFdwAAAAAAAAH//wACeJxjYGRgYOABYjEgZmJgBEIWMAbxGAADygAzAHicY2BgYGQAgtsKp6pB9NOm15NgNABQNAgKAAA=')format("woff");}.ff13{font-family:ff13;line-height:0.580000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff14;src:url('data:application/font-woff;base64,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')format("woff");}.ff14{font-family:ff14;line-height:0.922000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff15;src:url('data:application/font-woff;base64,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')format("woff");}.ff15{font-family:ff15;line-height:0.845000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff16;src:url('data:application/font-woff;base64,d09GRgABAAAAAAWUAA0AAAAACCwAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAFeAAAABoAAAAcpiahwEdERUYAAAVcAAAAHAAAAB4AJwANT1MvMgAAAaAAAAA8AAAAVlPeXoxjbWFwAAAB9AAAAFoAAAFaBzkMJ2dhc3AAAAVUAAAACAAAAAj//wADZ2x5ZgAAAmAAAAEYAAABWGIQ4GhoZWFkAAABMAAAADMAAAA2LDAbEGhoZWEAAAFkAAAAHAAAACQDxwITaG10eAAAAdwAAAAYAAAAGASaAFZsb2NhAAACUAAAABAAAAAQAGYA5G1heHAAAAGAAAAAHQAAACAASwA1bmFtZQAAA3gAAAG3AAADKjJvsnNwb3N0AAAFMAAAACEAAAAw/9EA3HicY2BkYGBgYmST2vliXjy/zVcGbuYXQBGGp02vF8FpNQYGxqeMD4FcDgYmkCgAdW4M2QB4nGNgZGBgfMgABEy8IJLxKQMjAypgBQAuSAHfeJxjYGRgYGBnMGJgYgABEMnIABJzAPMZAAgGAIEAAAB4nGNgZOxinMDAysDA1MW0h4GBoQdCMz5gMGRkAooysDIzwAAjAxIISHNNAVIKDHmMD8GSDxFqAMKpCRUBGAAAAAAAAAFNAAAAAQAAAg0AJgAnADB4nGNgYGBmgGAZBkYGEAgB8hjBfBYGCyDNxcDBwASECgyJDCkMef//A8Xg7P+P/y/+v/D/DKheKGBkY4ALMDIBCSYGVMAIsZIiwMLAwArnsFFqGtUBACCMDmgAAAAAAAAAAAAAAAAAOABmAKx4nGNgYlBjYGB8yviQQYlBlYFBVUSbUcnUxMxYXZndSBTCsWM0FrZjtGY0EhMXNpJj1GdkZ3yq5aklJMy3mU8VyBAU4KtgF5FilxZhq+ATEJzp5i4nJ88jrKcvJy/Hx8/EWC8iKCjyr5GJv/blSwYmBnWgfXcZbzCIMMiC7GOD2SGopMdoagKyht1ETZtR0NjIjPFuecxOkPlAY7V2xpa5hnnHxPiEvkzoBBscx8TPJzchwS3336JMBiBgZDAAEreBZhsCaRE+RmVBETZloLHqzMqCQJcj/AO3S1wYwWa8LSAgICzJJyDBvowRyNRy1xIAAy1jHQGYCOMuoM3/+qX5mQQFGIv+rQA5AeEY5X99jBEgBgBnNDuMeJylUsFq20AQfavYhkIJPeTQQ6FzdKBSZSUYYuihMXHARE6w45BTYZ2sZWFHayQH48/pvfRf+j299Hm1lFKaU7Vo5s3bmdmZ2QVwiO9QqL+731jhtXrvcYCW6nl8gI/qq8cNHKmfHjdxGEQet3AUZPRUjVe0vrmoPVZ4q5oeB8z/weMDfFGfPW6grX543MS74I3HLbSDT+jDYo0dSuTIsMAGggQx1wlCrhqfkZ3RS3COiHIIjQcsGbtFRZ2T0yjw6PYipM5r5PZrz71Hm3bhMhmepLHCnJZ18pbcPfUUE1xgTCm4pL4mc0PrmBnRt+tdmWeLjSRxfBKGlGcy28l5JEP9sLTbapmLLh5lGKWRjOyWZC5tW8jMLPRqLnYut+ZeppOL8UQux9fTm8kx816x4NQVZzkQzYFU6LBtXKWpLWxfr6sOrX0/JZ5c5RjZ8klTD1zcxumSIzRugBGjBT3+L+UO2Zyh/zOTaUbW3l3yHT/2hBYGttgMbJkZSaJYevJnReHYZM8rXZLuhh1OI+m+3Mvf5+Ffmfbv1XCz4n3Vd1W3EuOUGHemrHJOk6XEp/K/Z/0Cb0+KXgB4nGNgYgCD/7UMrgzYADsQMzIwMTAzuDC4MwQCAEh/Aq0AAAAAAAAB//8AAnicY2BkYGDgAWIxIGZiYARCNiBmAfMYAAPgADV4nGNgYGBkAILbCqeqQfTTpteLYDQAUNQIKgAA')format("woff");}.ff16{font-family:ff16;line-height:0.481000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff17;src:url('data:application/font-woff;base64,d09GRgABAAAAAAU8AA0AAAAAB8AAAgADAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAFIAAAABoAAAAcpiahwkdERUYAAAUEAAAAHAAAAB4AJwAMT1MvMgAAAaQAAABEAAAAVlRrgkdjbWFwAAACAAAAAEcAAAFSIaspMGdhc3AAAAT8AAAACAAAAAj//wADZ2x5ZgAAAlgAAACzAAAAyHlFGHBoZWFkAAABMAAAADEAAAA2Liga42hoZWEAAAFkAAAAIAAAACQF5ARiaG10eAAAAegAAAAYAAAAGA2MAHJsb2NhAAACSAAAAA4AAAAOAGQALG1heHAAAAGEAAAAHQAAACAASQApbmFtZQAAAwwAAAG2AAADQt/+T5Zwb3N0AAAExAAAADYAAABBON2473icY2BkYGBgYjhyXsynMZ7f5isDN/MLoAjD06bXi+G05f8vzCeZQFwOBjAFAJEODf0AAAB4nGNgZGBgYvj/hYGBhYUBCJhPMqQwSDIgAzYAUiEDTnicY2BkYGBgY1BjANEMDExAzAhmO4D5DAAGqABzAAAAeJxjYGTezjiBgZWBgamLaQ+DIkMPiP7fw/iAwZCRCSjKwMrMAAOMQJwA4wSkuaYAKQUlGyaG/19AKhl4oGoYAFBOC38BGAAAAAAAAAFNAAAEBAAABAQAOQMfADl4nGNgYGBmgGAZBkYGEPAB8hjBfBYGAyDNAYRMQFpBcZKSzf//CNb/x/eK7p6E6gIDRjYGOJcRpIeJARUwQqwazgAAbDoMHgAAAAAAAAAAAAAAACwAZAAAeJxjYGSw/P+F+SQTA4M0AwODCDsfIzubNqOSqZm5opKJsaKauok1o5G4HKM480nOoEIBJi4hHqmyP79FRZlZy6R4hLiYBAqDGJkEWKQaQ7n4+kK1Qvv4uEIbpRiA5jI0MD1lLGFQZWBgFGFTVlJT12NUVuJjZgeyTU3MjI3EgMYaG9kxmwPZTE/j/PT9TIw8NfgU1BXEmZh4+TEEGAP8mgwMdLXZRZWs1SSUkTkMAKdOIiwAeJytUstq20AUPaPYhtDiZVZZXNpNApGQZTAkq5IQG0xkBysO2Y4S2Ra2NUFSMF70ixLyR/2XHknTQkvJqhp077nvxwyALt6h0Hz3v7FCV3212EFHfbP4AD31anELR84ni9voOr98OtR/p6dqHVJ6q6MqrHCs2hY7+KwCiw8Qq5HFLZypHxa3cex8sbiDM2eKKxg8Y48cKZZYoYQggM/Th8vT4HNqY3oJLuGRjqHxiDVjdyjIU+o0MjzVNg9h7TWp7Y1n5XFCOaszJaykscGCkqnpHXUP5HNEuMaMVDAin1JzS+mUGXFlnvd5ulyVEvh+33VJzyXey6UnY/24NrtinYrOnmTshZ5MzI7KVE5MJnGy0puFmIXcJQ8yj65nkYxm0/ltdMq8N2w4ZEMl24o45pYtGrZXcHDchKEuV9F+G5tNQbmaKqdL1T8mJt9q8mE9WlnznItM6jV6XJ3ggv9HFVyOmTDmhbJmdBMxoL5nLyCghKHJyqHJl4kEni8X8mdf7ixZvmx0TsPA7XEzweDjuf6uin/nq15wQnPBG2xurxmreh9CY5IXKffLlvy+/J+KPwGGi5NVAAB4nGNgYmD4//Hb7v8TGNQYsAE2IGZkYGJgZmRiZOZKLCrKLy/KTM8oYS/OzM3MSSwCAIHyDLcAAAAAAAH//wACeJxjYGRgYOABYjEgZmJgBEJWIGYB8xgAA9UANHicY2BgYGQAgtsKp6pB9NOm14thNABQ3ggsAAA=')format("woff");}.ff17{font-family:ff17;line-height:0.524000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff18;src:url('data:application/font-woff;base64,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')format("woff");}.ff18{font-family:ff18;line-height:0.900000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff19;src:url('data:application/font-woff;base64,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')format("woff");}.ff19{font-family:ff19;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff1a;src:url('data:application/font-woff;base64,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')format("woff");}.ff1a{font-family:ff1a;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff1b;src:url('data:application/font-woff;base64,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')format("woff");}.ff1b{font-family:ff1b;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff1c;src:url('data:application/font-woff;base64,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')format("woff");}.ff1c{font-family:ff1c;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
.m0{transform:matrix(0.250000,0.000000,0.000000,0.250000,0,0);-ms-transform:matrix(0.250000,0.000000,0.000000,0.250000,0,0);-webkit-transform:matrix(0.250000,0.000000,0.000000,0.250000,0,0);}
.m1{transform:none;-ms-transform:none;-webkit-transform:none;}
.v0{vertical-align:0.000000px;}
.ls0{letter-spacing:0.000000px;}
.sc_{text-shadow:none;}
.sc0{text-shadow:-0.015em 0 transparent,0 0.015em transparent,0.015em 0 transparent,0 -0.015em transparent;}
@media screen and (-webkit-min-device-pixel-ratio:0){
.sc_{-webkit-text-stroke:0px transparent;}
.sc0{-webkit-text-stroke:0.015em transparent;text-shadow:none;}
}
.ws0{word-spacing:0.000000px;}
._41{margin-left:-9.022504px;}
._5{margin-left:-5.537550px;}
._7{margin-left:-3.844782px;}
._3{margin-left:-1.900950px;}
._b{width:1.090311px;}
._0{width:3.073600px;}
._3c{width:4.351795px;}
._11{width:6.240614px;}
._31{width:9.732380px;}
._26{width:11.078411px;}
._d{width:12.510544px;}
._c{width:14.055322px;}
._f{width:15.079127px;}
._8{width:16.199369px;}
._1b{width:17.275051px;}
._9{width:18.346366px;}
._21{width:19.506386px;}
._e{width:20.673031px;}
._6{width:21.691454px;}
._2d{width:23.659554px;}
._12{width:25.034189px;}
._10{width:26.625917px;}
._52{width:27.797566px;}
._2f{width:29.664415px;}
._4{width:31.241700px;}
._a{width:32.422412px;}
._15{width:33.771608px;}
._1{width:36.288314px;}
._20{width:38.335826px;}
._2{width:40.911750px;}
._63{width:45.944966px;}
._24{width:47.800940px;}
._1c{width:50.817358px;}
._38{width:53.057461px;}
._14{width:56.093951px;}
._45{width:75.413090px;}
._37{width:86.681115px;}
._29{width:88.228786px;}
._47{width:94.541569px;}
._2e{width:100.423260px;}
._40{width:102.176682px;}
._19{width:106.029372px;}
._5f{width:107.348182px;}
._28{width:109.150246px;}
._3b{width:113.555044px;}
._2b{width:115.090436px;}
._18{width:122.766582px;}
._34{width:126.240105px;}
._35{width:127.461924px;}
._36{width:131.118580px;}
._27{width:135.015636px;}
._3a{width:141.992846px;}
._33{width:149.192852px;}
._5b{width:150.635520px;}
._62{width:153.827558px;}
._1a{width:156.241002px;}
._4e{width:160.785485px;}
._5d{width:162.299744px;}
._43{width:169.948034px;}
._17{width:172.978212px;}
._4d{width:179.650790px;}
._3f{width:186.504466px;}
._2c{width:191.839826px;}
._39{width:196.101982px;}
._4c{width:198.444365px;}
._2a{width:212.761286px;}
._5a{width:244.782720px;}
._61{width:247.938893px;}
._4a{width:257.802006px;}
._5e{width:266.517274px;}
._60{width:295.209754px;}
._23{width:301.983850px;}
._32{width:309.512985px;}
._1d{width:321.768877px;}
._5c{width:357.759360px;}
._3e{width:390.311737px;}
._13{width:414.247680px;}
._48{width:434.043268px;}
._25{width:444.889866px;}
._46{width:452.389634px;}
._4b{width:527.805332px;}
._44{width:584.195714px;}
._49{width:734.348160px;}
._56{width:791.296430px;}
._55{width:861.879930px;}
._16{width:922.236338px;}
._1e{width:958.292279px;}
._3d{width:987.858602px;}
._22{width:993.874473px;}
._57{width:1007.453248px;}
._4f{width:1017.268394px;}
._30{width:1092.954091px;}
._42{width:1144.971240px;}
._54{width:1234.565970px;}
._1f{width:1236.945128px;}
._59{width:1266.223339px;}
._58{width:1303.236638px;}
._51{width:1309.570433px;}
._53{width:1420.803789px;}
._50{width:1432.758989px;}
.fcd{color:rgb(16,136,110);}
.fc0{color:rgb(35,55,59);}
.fc1{color:rgb(250,250,250);}
.fc2{color:rgb(255,255,255);}
.fc8{color:rgb(102,102,102);}
.fc3{color:rgb(173,34,49);}
.fc4{color:rgb(156,102,0);}
.fc5{color:rgb(61,122,122);}
.fcb{color:rgb(171,92,31);}
.fce{color:transparent;}
.fc7{color:rgb(0,0,255);}
.fca{color:rgb(186,33,33);}
.fc9{color:rgb(0,128,0);}
.fc6{color:rgb(176,0,64);}
.fcc{color:rgb(57,75,79);}
.fs8{font-size:23.910400px;}
.fs5{font-size:31.880400px;}
.fs7{font-size:35.865600px;}
.fs4{font-size:39.850400px;}
.fs6{font-size:43.636400px;}
.fs3{font-size:47.820800px;}
.fs2{font-size:57.384800px;}
.fs1{font-size:82.650000px;}
.fs0{font-size:99.148400px;}
.y152{bottom:-57.144000px;}
.y261{bottom:-9.666000px;}
.y0{bottom:-0.500000px;}
.y2e3{bottom:4.021000px;}
.y50{bottom:4.063000px;}
.y22e{bottom:4.357000px;}
.y19e{bottom:4.876000px;}
.y8c{bottom:4.978000px;}
.y13f{bottom:5.112000px;}
.y14f{bottom:5.381000px;}
.y319{bottom:5.432000px;}
.y1c1{bottom:5.448000px;}
.y1e4{bottom:5.464000px;}
.y269{bottom:5.548000px;}
.y1b4{bottom:5.776000px;}
.y300{bottom:6.294000px;}
.y26b{bottom:6.387000px;}
.y256{bottom:6.389000px;}
.y18b{bottom:6.392000px;}
.y239{bottom:6.398000px;}
.y2bd{bottom:6.608000px;}
.y328{bottom:6.649000px;}
.y48{bottom:6.767000px;}
.yb7{bottom:6.808000px;}
.y6c{bottom:7.813000px;}
.y2b4{bottom:8.053000px;}
.y157{bottom:8.111000px;}
.y2a7{bottom:8.239000px;}
.y176{bottom:8.376000px;}
.y1d6{bottom:8.382000px;}
.y12c{bottom:8.410000px;}
.y16b{bottom:9.017000px;}
.y200{bottom:9.317000px;}
.y278{bottom:9.433000px;}
.y244{bottom:9.491000px;}
.y331{bottom:9.591000px;}
.ye8{bottom:9.877000px;}
.y181{bottom:9.919000px;}
.y27d{bottom:10.049000px;}
.y7e{bottom:10.538000px;}
.y164{bottom:10.936000px;}
.y223{bottom:11.240000px;}
.y1ac{bottom:12.694000px;}
.y134{bottom:12.759000px;}
.y151{bottom:12.923000px;}
.y2ae{bottom:12.938000px;}
.y13{bottom:13.018000px;}
.ya0{bottom:13.303000px;}
.y291{bottom:13.457000px;}
.y96{bottom:15.185000px;}
.y122{bottom:15.708000px;}
.y322{bottom:16.047000px;}
.y268{bottom:16.158000px;}
.yc2{bottom:16.913000px;}
.y238{bottom:17.282000px;}
.y14e{bottom:17.984000px;}
.y12{bottom:18.172000px;}
.y260{bottom:18.557000px;}
.y6b{bottom:18.697000px;}
.y20b{bottom:18.811000px;}
.y18a{bottom:18.995000px;}
.y47{bottom:19.369000px;}
.y22d{bottom:19.939000px;}
.y156{bottom:20.714000px;}
.y2ff{bottom:20.890000px;}
.y24f{bottom:20.968000px;}
.y1d5{bottom:20.985000px;}
.y7d{bottom:21.422000px;}
.y16a{bottom:21.620000px;}
.y288{bottom:21.863000px;}
.y277{bottom:22.036000px;}
.y180{bottom:22.522000px;}
.yf2{bottom:22.542000px;}
.y196{bottom:23.065000px;}
.y163{bottom:23.539000px;}
.y1ff{bottom:23.912000px;}
.y1ab{bottom:25.297000px;}
.y25{bottom:25.331000px;}
.y290{bottom:26.059000px;}
.y121{bottom:26.592000px;}
.y267{bottom:26.769000px;}
.y2fb{bottom:26.871000px;}
.yd5{bottom:27.106000px;}
.y100{bottom:27.524000px;}
.y237{bottom:28.166000px;}
.y150{bottom:28.504000px;}
.y2ad{bottom:28.520000px;}
.y109{bottom:28.993000px;}
.y2e{bottom:29.396000px;}
.y6a{bottom:29.581000px;}
.y147{bottom:29.780000px;}
.yb6{bottom:29.948000px;}
.y2d2{bottom:30.030000px;}
.y95{bottom:30.766000px;}
.y330{bottom:31.150000px;}
.y21c{bottom:31.513000px;}
.y46{bottom:31.972000px;}
.y7c{bottom:32.306000px;}
.yc1{bottom:32.495000px;}
.y1e3{bottom:32.590000px;}
.y2c8{bottom:34.006000px;}
.y243{bottom:34.044000px;}
.y25f{bottom:34.138000px;}
.y169{bottom:34.222000px;}
.y20a{bottom:34.393000px;}
.y8b{bottom:34.612000px;}
.y1c0{bottom:34.970000px;}
.y11{bottom:35.582000px;}
.y162{bottom:36.141000px;}
.y2ee{bottom:36.510000px;}
.y24e{bottom:36.550000px;}
.y1bd{bottom:37.128000px;}
.y287{bottom:37.444000px;}
.y307{bottom:37.476000px;}
.y1aa{bottom:37.899000px;}
.yd4{bottom:37.990000px;}
.yf1{bottom:38.123000px;}
.y195{bottom:38.647000px;}
.y112{bottom:39.004000px;}
.y236{bottom:39.050000px;}
.y9f{bottom:39.238000px;}
.y1ca{bottom:39.874000px;}
.y13e{bottom:40.181000px;}
.y69{bottom:40.465000px;}
.yb5{bottom:40.832000px;}
.y22c{bottom:40.984000px;}
.y175{bottom:41.221000px;}
.y2bc{bottom:41.610000px;}
.y12b{bottom:41.984000px;}
.y2de{bottom:42.450000px;}
.y2fa{bottom:42.452000px;}
.y39{bottom:42.888000px;}
.y6{bottom:43.061000px;}
.yff{bottom:43.105000px;}
.y2a1{bottom:43.107000px;}
.y7b{bottom:43.190000px;}
.y327{bottom:43.448000px;}
.y1e2{bottom:43.474000px;}
.y321{bottom:43.584000px;}
.y21b{bottom:44.116000px;}
.y24{bottom:44.534000px;}
.y108{bottom:44.574000px;}
.y1b3{bottom:45.262000px;}
.y146{bottom:45.361000px;}
.y2d1{bottom:45.612000px;}
.y32f{bottom:46.731000px;}
.y8a{bottom:47.215000px;}
.y19d{bottom:47.506000px;}
.y318{bottom:47.519000px;}
.y242{bottom:47.792000px;}
.y2ac{bottom:48.086000px;}
.y120{bottom:48.360000px;}
.y161{bottom:48.744000px;}
.yd3{bottom:48.874000px;}
.y155{bottom:49.352000px;}
.y2c7{bottom:49.588000px;}
.y25e{bottom:49.720000px;}
.y235{bottom:49.934000px;}
.y209{bottom:49.974000px;}
.y1a9{bottom:50.502000px;}
.y1bf{bottom:50.552000px;}
.y276{bottom:50.757000px;}
.ye7{bottom:51.255000px;}
.y68{bottom:51.349000px;}
.yb4{bottom:51.467000px;}
.y58{bottom:51.968000px;}
.y2ed{bottom:52.091000px;}
.y24d{bottom:52.131000px;}
.y1c9{bottom:52.477000px;}
.y1bc{bottom:52.710000px;}
.y10{bottom:52.992000px;}
.y215{bottom:53.062000px;}
.y22b{bottom:53.587000px;}
.y7a{bottom:54.074000px;}
.y194{bottom:54.228000px;}
.y1e1{bottom:54.358000px;}
.y2dd{bottom:55.053000px;}
.y13d{bottom:55.762000px;}
.y299{bottom:55.862000px;}
.yc0{bottom:56.046000px;}
.y1fe{bottom:56.280000px;}
.y21a{bottom:56.470000px;}
.y94{bottom:56.783000px;}
.y2b3{bottom:57.003000px;}
.y189{bottom:57.052000px;}
.y1b{bottom:57.079000px;}
.y45{bottom:57.177000px;}
.y2bb{bottom:57.192000px;}
.y12a{bottom:57.566000px;}
.y38{bottom:58.470000px;}
.y9e{bottom:58.486000px;}
.y2a0{bottom:58.689000px;}
.y1eb{bottom:58.847000px;}
.y286{bottom:59.003000px;}
.y2d{bottom:59.085000px;}
.y320{bottom:59.165000px;}
.y4f{bottom:59.186000px;}
.y11f{bottom:59.245000px;}
.y255{bottom:59.710000px;}
.y5{bottom:59.736000px;}
.yd2{bottom:59.758000px;}
.y89{bottom:59.817000px;}
.ycc{bottom:59.890000px;}
.y317{bottom:60.122000px;}
.y266{bottom:60.629000px;}
.y234{bottom:60.818000px;}
.y1b2{bottom:60.843000px;}
.y111{bottom:60.959000px;}
.y2d0{bottom:61.193000px;}
.y160{bottom:61.347000px;}
.y222{bottom:61.381000px;}
.y241{bottom:61.541000px;}
.ya8{bottom:61.547000px;}
.yf0{bottom:61.675000px;}
.y154{bottom:61.954000px;}
.y67{bottom:62.233000px;}
.y174{bottom:62.646000px;}
.y305{bottom:62.710000px;}
.y1a8{bottom:62.856000px;}
.y2ab{bottom:63.668000px;}
.y23{bottom:63.737000px;}
.ycd{bottom:63.849000px;}
.y14d{bottom:64.011000px;}
.y79{bottom:64.958000px;}
.y1c8{bottom:65.080000px;}
.y2c6{bottom:65.169000px;}
.y1e0{bottom:65.242000px;}
.y25d{bottom:65.301000px;}
.y214{bottom:65.665000px;}
.y22a{bottom:65.940000px;}
.y107{bottom:66.133000px;}
.y275{bottom:66.338000px;}
.yfe{bottom:66.657000px;}
.y2dc{bottom:67.655000px;}
.y298{bottom:68.215000px;}
.y32e{bottom:68.290000px;}
.y326{bottom:68.992000px;}
.y44{bottom:69.780000px;}
.ybf{bottom:69.795000px;}
.y193{bottom:69.810000px;}
.y11e{bottom:70.129000px;}
.yf{bottom:70.402000px;}
.ye6{bottom:70.458000px;}
.y57{bottom:70.538000px;}
.yd1{bottom:70.642000px;}
.y188{bottom:70.801000px;}
.y19c{bottom:71.217000px;}
.y13c{bottom:71.344000px;}
.y233{bottom:71.453000px;}
.y30f{bottom:71.751000px;}
.y1fd{bottom:71.862000px;}
.y219{bottom:72.061000px;}
.y93{bottom:72.365000px;}
.y88{bottom:72.420000px;}
.y2b2{bottom:72.584000px;}
.y1f1{bottom:72.616000px;}
.y2fe{bottom:72.977000px;}
.y66{bottom:73.117000px;}
.y24c{bottom:73.167000px;}
.y1bb{bottom:73.746000px;}
.y15f{bottom:73.949000px;}
.y29f{bottom:74.270000px;}
.y1ea{bottom:74.429000px;}
.y1a{bottom:74.489000px;}
.y153{bottom:74.557000px;}
.y285{bottom:74.585000px;}
.y4e{bottom:74.767000px;}
.y173{bottom:75.248000px;}
.y254{bottom:75.291000px;}
.ydb{bottom:75.330000px;}
.y208{bottom:75.518000px;}
.y2ec{bottom:75.608000px;}
.y78{bottom:75.842000px;}
.y28f{bottom:75.852000px;}
.y17f{bottom:76.066000px;}
.y1df{bottom:76.126000px;}
.y1b1{bottom:76.425000px;}
.y2a6{bottom:76.616000px;}
.y221{bottom:76.963000px;}
.yef{bottom:77.257000px;}
.y1c7{bottom:77.682000px;}
.y9d{bottom:77.734000px;}
.y168{bottom:77.959000px;}
.yb3{bottom:78.155000px;}
.y213{bottom:78.268000px;}
.y304{bottom:78.292000px;}
.y1a7{bottom:78.447000px;}
.y2ba{bottom:78.726000px;}
.y145{bottom:78.875000px;}
.y229{bottom:79.539000px;}
.y14c{bottom:79.593000px;}
.y2cf{bottom:79.739000px;}
.y274{bottom:79.927000px;}
.y2f9{bottom:79.951000px;}
.y129{bottom:80.594000px;}
.y25c{bottom:80.883000px;}
.y11d{bottom:81.013000px;}
.yd0{bottom:81.526000px;}
.y170{bottom:81.550000px;}
.y106{bottom:81.715000px;}
.y133{bottom:82.327000px;}
.y43{bottom:82.383000px;}
.yac{bottom:82.738000px;}
.y110{bottom:82.914000px;}
.y22{bottom:82.940000px;}
.ybe{bottom:83.543000px;}
.y32d{bottom:83.872000px;}
.y65{bottom:84.002000px;}
.y265{bottom:84.181000px;}
.ye5{bottom:84.206000px;}
.y19b{bottom:84.966000px;}
.y87{bottom:85.023000px;}
.y2aa{bottom:85.202000px;}
.y316{bottom:85.327000px;}
.y2f4{bottom:85.810000px;}
.y2db{bottom:85.891000px;}
.y240{bottom:86.223000px;}
.y207{bottom:86.402000px;}
.y15e{bottom:86.552000px;}
.y31f{bottom:86.702000px;}
.y77{bottom:86.726000px;}
.y1de{bottom:87.010000px;}
.yfd{bottom:87.160000px;}
.y30e{bottom:87.332000px;}
.y335{bottom:87.437000px;}
.y1fc{bottom:87.443000px;}
.y1d3{bottom:87.481000px;}
.y218{bottom:87.643000px;}
.ye{bottom:87.811000px;}
.y172{bottom:87.851000px;}
.y2c{bottom:87.921000px;}
.y92{bottom:87.946000px;}
.y37{bottom:87.999000px;}
.y1f0{bottom:88.197000px;}
.y2eb{bottom:88.210000px;}
.y17e{bottom:88.669000px;}
.y24b{bottom:88.749000px;}
.y232{bottom:88.788000px;}
.y56{bottom:89.108000px;}
.y297{bottom:89.261000px;}
.y1ba{bottom:89.327000px;}
.y187{bottom:89.530000px;}
.y284{bottom:90.166000px;}
.y212{bottom:90.621000px;}
.y253{bottom:90.873000px;}
.y192{bottom:91.344000px;}
.y28e{bottom:91.433000px;}
.y306{bottom:91.897000px;}
.y19{bottom:91.899000px;}
.ycf{bottom:92.410000px;}
.y26a{bottom:92.544000px;}
.y144{bottom:92.624000px;}
.y128{bottom:93.197000px;}
.y167{bottom:93.540000px;}
.y2b1{bottom:93.620000px;}
.y2b9{bottom:94.308000px;}
.y1f6{bottom:94.457000px;}
.y325{bottom:94.537000px;}
.y64{bottom:94.886000px;}
.y42{bottom:94.985000px;}
.y273{bottom:95.509000px;}
.y2f8{bottom:95.533000px;}
.y9c{bottom:96.981000px;}
.y206{bottom:97.037000px;}
.ya7{bottom:97.053000px;}
.yd9{bottom:97.144000px;}
.ybd{bottom:97.291000px;}
.y105{bottom:97.296000px;}
.y228{bottom:97.477000px;}
.y76{bottom:97.610000px;}
.y86{bottom:97.625000px;}
.yb2{bottom:97.881000px;}
.y1dd{bottom:97.894000px;}
.y132{bottom:97.909000px;}
.y315{bottom:97.930000px;}
.ye4{bottom:97.954000px;}
.y1b0{bottom:97.959000px;}
.yab{bottom:98.320000px;}
.y2f3{bottom:98.413000px;}
.y2c5{bottom:98.683000px;}
.yee{bottom:98.791000px;}
.y15d{bottom:99.155000px;}
.y27c{bottom:99.543000px;}
.yfc{bottom:99.762000px;}
.y1d2{bottom:100.083000px;}
.y10f{bottom:100.209000px;}
.y1d4{bottom:100.354000px;}
.y171{bottom:100.454000px;}
.y2ea{bottom:100.813000px;}
.y13b{bottom:100.873000px;}
.y1a6{bottom:101.012000px;}
.y17d{bottom:101.022000px;}
.yda{bottom:101.103000px;}
.y23f{bottom:101.804000px;}
.y1e9{bottom:101.965000px;}
.y21{bottom:102.143000px;}
.y31e{bottom:102.283000px;}
.y25b{bottom:102.417000px;}
.y2ce{bottom:102.767000px;}
.y11c{bottom:102.781000px;}
.y1c6{bottom:102.888000px;}
.y334{bottom:103.019000px;}
.yce{bottom:103.045000px;}
.y217{bottom:103.224000px;}
.y186{bottom:103.279000px;}
.y2a5{bottom:103.553000px;}
.y36{bottom:103.580000px;}
.y29e{bottom:103.799000px;}
.y309{bottom:103.877000px;}
.y24a{bottom:104.330000px;}
.yd{bottom:105.221000px;}
.y32c{bottom:105.406000px;}
.y63{bottom:105.770000px;}
.y127{bottom:105.800000px;}
.y2a9{bottom:106.238000px;}
.y2fd{bottom:106.492000px;}
.y2b{bottom:107.124000px;}
.y41{bottom:107.588000px;}
.y31{bottom:107.625000px;}
.y55{bottom:107.679000px;}
.y205{bottom:107.921000px;}
.y4d{bottom:108.281000px;}
.y220{bottom:108.484000px;}
.y75{bottom:108.495000px;}
.y19a{bottom:108.677000px;}
.y1dc{bottom:108.778000px;}
.y2b0{bottom:109.202000px;}
.y18{bottom:109.308000px;}
.y91{bottom:109.481000px;}
.y1f5{bottom:110.038000px;}
.y314{bottom:110.533000px;}
.y2f2{bottom:111.015000px;}
.ybc{bottom:111.040000px;}
.y272{bottom:111.090000px;}
.y283{bottom:111.725000px;}
.y15c{bottom:111.757000px;}
.y231{bottom:111.976000px;}
.y143{bottom:112.350000px;}
.yfb{bottom:112.365000px;}
.y1d1{bottom:112.437000px;}
.ya6{bottom:112.635000px;}
.y191{bottom:112.878000px;}
.y211{bottom:112.913000px;}
.y28d{bottom:112.992000px;}
.y296{bottom:113.286000px;}
.y2e9{bottom:113.415000px;}
.y131{bottom:113.490000px;}
.y1a5{bottom:113.615000px;}
.y11b{bottom:113.665000px;}
.y2b8{bottom:113.874000px;}
.y17c{bottom:114.098000px;}
.y2c4{bottom:114.265000px;}
.y14b{bottom:115.099000px;}
.y27b{bottom:115.124000px;}
.y2cd{bottom:115.370000px;}
.y1c5{bottom:115.490000px;}
.y226{bottom:115.533000px;}
.ycb{bottom:115.648000px;}
.y1ef{bottom:115.734000px;}
.y9b{bottom:116.229000px;}
.y13a{bottom:116.454000px;}
.y2da{bottom:116.488000px;}
.y62{bottom:116.654000px;}
.y30d{bottom:116.861000px;}
.y4{bottom:117.135000px;}
.y23e{bottom:117.386000px;}
.ye3{bottom:117.392000px;}
.y1e8{bottom:117.547000px;}
.yb1{bottom:117.607000px;}
.y31d{bottom:117.865000px;}
.y1f2{bottom:117.936000px;}
.y126{bottom:118.402000px;}
.y204{bottom:118.806000px;}
.y104{bottom:118.831000px;}
.yd8{bottom:118.958000px;}
.y1fb{bottom:118.965000px;}
.y185{bottom:118.995000px;}
.y74{bottom:119.379000px;}
.y29d{bottom:119.381000px;}
.y1db{bottom:119.662000px;}
.y249{bottom:119.912000px;}
.y324{bottom:120.081000px;}
.y40{bottom:120.191000px;}
.y4c{bottom:120.635000px;}
.ya2{bottom:121.063000px;}
.y20{bottom:121.346000px;}
.y303{bottom:121.769000px;}
.y2a8{bottom:121.819000px;}
.y16f{bottom:121.878000px;}
.y1b9{bottom:122.161000px;}
.y199{bottom:122.425000px;}
.yc{bottom:122.631000px;}
.y85{bottom:122.831000px;}
.y313{bottom:122.886000px;}
.y264{bottom:123.314000px;}
.y2f1{bottom:123.369000px;}
.yed{bottom:123.812000px;}
.y21f{bottom:124.066000px;}
.y230{bottom:124.330000px;}
.y11a{bottom:124.549000px;}
.y2af{bottom:124.783000px;}
.ybb{bottom:124.788000px;}
.yfa{bottom:124.968000px;}
.y90{bottom:125.062000px;}
.y210{bottom:125.515000px;}
.y295{bottom:125.640000px;}
.y2e8{bottom:125.769000px;}
.y1d0{bottom:125.846000px;}
.y1a4{bottom:125.969000px;}
.y142{bottom:126.098000px;}
.y54{bottom:126.249000px;}
.y2a{bottom:126.327000px;}
.yca{bottom:126.532000px;}
.y271{bottom:126.672000px;}
.y17{bottom:126.718000px;}
.y252{bottom:126.853000px;}
.y32b{bottom:126.940000px;}
.y61{bottom:127.538000px;}
.y10e{bottom:127.746000px;}
.y2cc{bottom:127.973000px;}
.y1c4{bottom:128.093000px;}
.y225{bottom:128.136000px;}
.ya5{bottom:128.216000px;}
.y30{bottom:128.248000px;}
.y190{bottom:128.459000px;}
.y1af{bottom:128.957000px;}
.y130{bottom:129.072000px;}
.y2d9{bottom:129.090000px;}
.y2a4{bottom:129.097000px;}
.y2b7{bottom:129.456000px;}
.ye2{bottom:129.995000px;}
.y73{bottom:130.263000px;}
.y1da{bottom:130.547000px;}
.y14a{bottom:130.681000px;}
.y125{bottom:131.005000px;}
.y1ee{bottom:131.315000px;}
.y30c{bottom:132.443000px;}
.y3f{bottom:132.793000px;}
.y282{bottom:133.010000px;}
.y2f7{bottom:133.032000px;}
.y25a{bottom:133.914000px;}
.y17b{bottom:134.148000px;}
.y35{bottom:134.292000px;}
.y203{bottom:134.387000px;}
.y28c{bottom:134.551000px;}
.y4b{bottom:134.870000px;}
.y29c{bottom:134.962000px;}
.y84{bottom:135.433000px;}
.y23d{bottom:135.931000px;}
.y15b{bottom:136.963000px;}
.y2c3{bottom:136.993000px;}
.y302{bottom:137.350000px;}
.y2e7{bottom:137.375000px;}
.yc9{bottom:137.416000px;}
.yf9{bottom:137.570000px;}
.y2f{bottom:137.727000px;}
.y1b8{bottom:137.743000px;}
.y2e2{bottom:137.934000px;}
.y20f{bottom:138.118000px;}
.y135{bottom:138.248000px;}
.y60{bottom:138.422000px;}
.y312{bottom:138.478000px;}
.yba{bottom:138.536000px;}
.yb0{bottom:138.689000px;}
.y263{bottom:138.895000px;}
.y3{bottom:139.153000px;}
.yec{bottom:139.393000px;}
.yaa{bottom:139.804000px;}
.y141{bottom:139.847000px;}
.y2fc{bottom:140.006000px;}
.y227{bottom:140.489000px;}
.y333{bottom:140.518000px;}
.y1f{bottom:140.549000px;}
.y2cb{bottom:140.575000px;}
.y166{bottom:140.643000px;}
.y1c3{bottom:140.696000px;}
.y9a{bottom:141.109000px;}
.y72{bottom:141.147000px;}
.y1d9{bottom:141.431000px;}
.y248{bottom:141.446000px;}
.y1a3{bottom:141.560000px;}
.y2d8{bottom:141.693000px;}
.y270{bottom:142.253000px;}
.y251{bottom:142.434000px;}
.ye1{bottom:142.597000px;}
.y16e{bottom:143.303000px;}
.y22f{bottom:143.383000px;}
.y124{bottom:143.608000px;}
.y18f{bottom:144.041000px;}
.y16{bottom:144.128000px;}
.y1ae{bottom:144.539000px;}
.y103{bottom:144.848000px;}
.y184{bottom:145.012000px;}
.y2b6{bottom:145.037000px;}
.y1e7{bottom:145.084000px;}
.y53{bottom:145.292000px;}
.y3e{bottom:145.396000px;}
.y29{bottom:145.530000px;}
.y323{bottom:145.625000px;}
.y139{bottom:145.984000px;}
.y119{bottom:146.317000px;}
.yd7{bottom:146.405000px;}
.y31c{bottom:146.584000px;}
.y1f4{bottom:146.656000px;}
.y294{bottom:146.686000px;}
.y17a{bottom:146.751000px;}
.y83{bottom:148.036000px;}
.yc8{bottom:148.300000px;}
.y198{bottom:148.340000px;}
.y32a{bottom:148.499000px;}
.y2f6{bottom:148.614000px;}
.y2e1{bottom:148.818000px;}
.y5f{bottom:149.306000px;}
.yb{bottom:149.475000px;}
.y259{bottom:149.495000px;}
.y15a{bottom:149.565000px;}
.y2c2{bottom:149.596000px;}
.y10d{bottom:149.701000px;}
.y2f0{bottom:149.729000px;}
.y34{bottom:149.873000px;}
.yc3{bottom:149.912000px;}
.y202{bottom:149.969000px;}
.y1be{bottom:149.993000px;}
.yf8{bottom:150.173000px;}
.y20e{bottom:150.472000px;}
.y1fa{bottom:150.487000px;}
.y8f{bottom:150.606000px;}
.y2a3{bottom:150.631000px;}
.y27a{bottom:151.742000px;}
.y4a{bottom:151.844000px;}
.y71{bottom:152.031000px;}
.y1d8{bottom:152.066000px;}
.y2d6{bottom:152.173000px;}
.yaf{bottom:152.438000px;}
.y311{bottom:152.896000px;}
.y2ca{bottom:153.178000px;}
.y1ce{bottom:153.865000px;}
.y2d7{bottom:154.047000px;}
.y247{bottom:154.048000px;}
.y224{bottom:154.088000px;}
.y262{bottom:154.477000px;}
.yeb{bottom:154.975000px;}
.ye0{bottom:155.200000px;}
.y1ed{bottom:155.340000px;}
.ya9{bottom:155.386000px;}
.ya1{bottom:155.434000px;}
.y21e{bottom:155.587000px;}
.y123{bottom:155.961000px;}
.y30b{bottom:155.995000px;}
.y12f{bottom:156.086000px;}
.y332{bottom:156.100000px;}
.y28b{bottom:156.110000px;}
.y118{bottom:157.202000px;}
.y281{bottom:157.318000px;}
.y23c{bottom:157.465000px;}
.y140{bottom:157.580000px;}
.y3d{bottom:157.999000px;}
.y179{bottom:159.104000px;}
.yc7{bottom:159.185000px;}
.y1b7{bottom:159.226000px;}
.y2e0{bottom:159.453000px;}
.y1e{bottom:159.752000px;}
.y216{bottom:159.931000px;}
.y5e{bottom:160.190000px;}
.y102{bottom:160.429000px;}
.y183{bottom:160.594000px;}
.y82{bottom:160.639000px;}
.y1e6{bottom:160.665000px;}
.y2e6{bottom:161.141000px;}
.y26f{bottom:161.461000px;}
.y15{bottom:161.537000px;}
.yb9{bottom:162.088000px;}
.y31b{bottom:162.165000px;}
.y159{bottom:162.168000px;}
.y2c1{bottom:162.199000px;}
.y1f3{bottom:162.237000px;}
.yf7{bottom:162.776000px;}
.y70{bottom:162.915000px;}
.ya4{bottom:163.723000px;}
.y329{bottom:164.081000px;}
.y1a2{bottom:164.125000px;}
.y29b{bottom:164.491000px;}
.y16d{bottom:164.727000px;}
.y28{bottom:164.733000px;}
.y2d5{bottom:164.776000px;}
.y258{bottom:165.077000px;}
.y2ef{bottom:165.310000px;}
.y2c9{bottom:165.532000px;}
.y201{bottom:165.550000px;}
.y18e{bottom:165.575000px;}
.y1c2{bottom:165.652000px;}
.y149{bottom:166.188000px;}
.y1cd{bottom:166.468000px;}
.y2b5{bottom:166.571000px;}
.y1cf{bottom:166.738000px;}
.ya{bottom:166.884000px;}
.y279{bottom:167.323000px;}
.ydf{bottom:167.803000px;}
.y117{bottom:168.086000px;}
.y99{bottom:169.037000px;}
.y1f9{bottom:169.216000px;}
.yc6{bottom:170.069000px;}
.yea{bottom:170.556000px;}
.y3c{bottom:170.601000px;}
.y1ec{bottom:170.922000px;}
.y5d{bottom:171.074000px;}
.y21d{bottom:171.169000px;}
.y30a{bottom:171.576000px;}
.y10c{bottom:171.657000px;}
.y12e{bottom:171.667000px;}
.y28a{bottom:171.692000px;}
.yae{bottom:172.163000px;}
.y2df{bottom:172.305000px;}
.y1d7{bottom:172.389000px;}
.y308{bottom:172.619000px;}
.y280{bottom:172.899000px;}
.y197{bottom:173.022000px;}
.y23b{bottom:173.047000px;}
.y81{bottom:173.241000px;}
.y293{bottom:173.699000px;}
.y178{bottom:174.173000px;}
.y2c0{bottom:174.801000px;}
.yf6{bottom:175.378000px;}
.y138{bottom:175.513000px;}
.y101{bottom:176.011000px;}
.y8e{bottom:176.150000px;}
.y52{bottom:176.291000px;}
.y2a2{bottom:176.648000px;}
.y1a1{bottom:176.728000px;}
.y26e{bottom:177.043000px;}
.y2{bottom:177.056000px;}
.y2d4{bottom:177.378000px;}
.y20d{bottom:177.495000px;}
.y250{bottom:178.414000px;}
.y1cc{bottom:178.821000px;}
.y14{bottom:178.947000px;}
.y1d{bottom:178.955000px;}
.y116{bottom:178.970000px;}
.y246{bottom:179.254000px;}
.ya3{bottom:179.305000px;}
.y33{bottom:179.402000px;}
.y29a{bottom:180.073000px;}
.yde{bottom:180.405000px;}
.y257{bottom:180.658000px;}
.y301{bottom:180.827000px;}
.yc5{bottom:180.953000px;}
.yd6{bottom:181.111000px;}
.y310{bottom:181.132000px;}
.y1ad{bottom:181.156000px;}
.y182{bottom:181.630000px;}
.y148{bottom:181.769000px;}
.y5c{bottom:181.959000px;}
.y2e5{bottom:182.700000px;}
.y1f8{bottom:182.965000px;}
.y3b{bottom:183.204000px;}
.y27{bottom:183.936000px;}
.y9{bottom:184.294000px;}
.y98{bottom:184.619000px;}
.y6f{bottom:184.683000px;}
.y1e5{bottom:184.690000px;}
.y1b6{bottom:185.243000px;}
.yb8{bottom:185.640000px;}
.y80{bottom:185.844000px;}
.yad{bottom:185.912000px;}
.y2f5{bottom:186.113000px;}
.y18d{bottom:186.611000px;}
.y49{bottom:186.750000px;}
.y158{bottom:187.124000px;}
.y2bf{bottom:187.155000px;}
.y12d{bottom:187.249000px;}
.yf5{bottom:187.981000px;}
.y27f{bottom:188.481000px;}
.y23a{bottom:188.628000px;}
.y10b{bottom:188.952000px;}
.y1a0{bottom:189.082000px;}
.y292{bottom:189.281000px;}
.y31a{bottom:189.702000px;}
.y2d3{bottom:189.732000px;}
.y115{bottom:189.854000px;}
.y137{bottom:191.094000px;}
.yc4{bottom:191.588000px;}
.ye9{bottom:191.592000px;}
.y245{bottom:191.607000px;}
.y165{bottom:191.732000px;}
.y16c{bottom:191.784000px;}
.y51{bottom:191.872000px;}
.y1cb{bottom:192.230000px;}
.y26d{bottom:192.624000px;}
.ydd{bottom:192.759000px;}
.y5b{bottom:192.843000px;}
.y20c{bottom:193.077000px;}
.y289{bottom:193.226000px;}
.y6e{bottom:195.318000px;}
.y1f7{bottom:196.713000px;}
.y177{bottom:197.211000px;}
.y1{bottom:197.678000px;}
.y1c{bottom:198.158000px;}
.y7f{bottom:198.197000px;}
.y97{bottom:200.200000px;}
.yf4{bottom:200.584000px;}
.y114{bottom:200.738000px;}
.y1b5{bottom:200.825000px;}
.y8d{bottom:201.694000px;}
.y8{bottom:201.704000px;}
.y18c{bottom:202.193000px;}
.y26{bottom:203.139000px;}
.y32{bottom:203.427000px;}
.y5a{bottom:203.727000px;}
.y10a{bottom:204.533000px;}
.y19f{bottom:204.673000px;}
.y2be{bottom:206.168000px;}
.y136{bottom:206.676000px;}
.y2e4{bottom:206.724000px;}
.y27e{bottom:206.792000px;}
.y6d{bottom:207.174000px;}
.y3a{bottom:208.160000px;}
.y26c{bottom:208.206000px;}
.ydc{bottom:210.153000px;}
.y113{bottom:211.373000px;}
.yf3{bottom:212.937000px;}
.y59{bottom:214.362000px;}
.y7{bottom:236.149000px;}
.h12{height:21.901835px;}
.hf{height:22.124998px;}
.ha{height:23.910300px;}
.hd{height:24.890726px;}
.h10{height:26.899200px;}
.h9{height:27.576477px;}
.hc{height:27.656178px;}
.h13{height:27.752750px;}
.h6{height:29.887800px;}
.h11{height:30.283662px;}
.hb{height:32.727300px;}
.he{height:33.091994px;}
.h5{height:33.187635px;}
.h7{height:35.865600px;}
.h4{height:40.456284px;}
.h8{height:43.038600px;}
.h3{height:58.268250px;}
.h2{height:74.361300px;}
.h0{height:255.118000px;}
.h1{height:255.500000px;}
.w0{width:453.543000px;}
.w1{width:454.000000px;}
.x0{left:0.000000px;}
.x4{left:10.667000px;}
.x2e{left:16.597000px;}
.x1{left:28.346000px;}
.x2a{left:29.376000px;}
.x1a{left:31.335000px;}
.x5{left:34.488000px;}
.xb{left:36.225000px;}
.x30{left:38.309000px;}
.x10{left:41.049000px;}
.x27{left:42.468000px;}
.x37{left:43.588000px;}
.xf{left:45.283000px;}
.xd{left:47.176000px;}
.x36{left:49.316000px;}
.x6{left:50.486000px;}
.x2c{left:51.909000px;}
.xc{left:53.153000px;}
.x9{left:55.397000px;}
.x12{left:57.985000px;}
.x38{left:60.770000px;}
.x15{left:62.219000px;}
.x32{left:64.238000px;}
.x16{left:66.005000px;}
.x2b{left:69.637000px;}
.x3d{left:70.712000px;}
.x1b{left:71.983000px;}
.x45{left:73.704000px;}
.x19{left:74.787000px;}
.x2f{left:77.793000px;}
.x20{left:82.881000px;}
.x42{left:88.122000px;}
.x35{left:89.406000px;}
.x21{left:93.907000px;}
.x14{left:96.092000px;}
.x17{left:98.957000px;}
.x1c{left:102.849000px;}
.x8{left:106.772000px;}
.x3c{left:109.763000px;}
.x41{left:117.786000px;}
.x1d{left:119.785000px;}
.x11{left:121.497000px;}
.x22{left:125.776000px;}
.x34{left:127.973000px;}
.x1e{left:136.722000px;}
.x18{left:138.153000px;}
.x1f{left:153.658000px;}
.x2{left:158.505000px;}
.xa{left:170.858000px;}
.x39{left:173.715000px;}
.x3e{left:186.676000px;}
.x3a{left:191.525000px;}
.x40{left:200.798000px;}
.x33{left:202.333000px;}
.x3f{left:205.506000px;}
.x3b{left:210.354000px;}
.x31{left:216.640000px;}
.x23{left:224.174000px;}
.x28{left:227.573000px;}
.x43{left:228.590000px;}
.xe{left:230.762000px;}
.x2d{left:240.177000px;}
.x29{left:241.695000px;}
.x24{left:243.004000px;}
.x44{left:247.419000px;}
.x25{left:261.833000px;}
.x26{left:280.662000px;}
.x3{left:378.705000px;}
.x13{left:424.403000px;}
.x7{left:428.637000px;}
@media print{
.v0{vertical-align:0.000000pt;}
.ls0{letter-spacing:0.000000pt;}
.ws0{word-spacing:0.000000pt;}
._41{margin-left:-12.030006pt;}
._5{margin-left:-7.383400pt;}
._7{margin-left:-5.126375pt;}
._3{margin-left:-2.534600pt;}
._b{width:1.453748pt;}
._0{width:4.098134pt;}
._3c{width:5.802394pt;}
._11{width:8.320819pt;}
._31{width:12.976506pt;}
._26{width:14.771215pt;}
._d{width:16.680726pt;}
._c{width:18.740429pt;}
._f{width:20.105503pt;}
._8{width:21.599159pt;}
._1b{width:23.033401pt;}
._9{width:24.461821pt;}
._21{width:26.008515pt;}
._e{width:27.564042pt;}
._6{width:28.921939pt;}
._2d{width:31.546072pt;}
._12{width:33.378918pt;}
._10{width:35.501222pt;}
._52{width:37.063421pt;}
._2f{width:39.552553pt;}
._4{width:41.655600pt;}
._a{width:43.229883pt;}
._15{width:45.028811pt;}
._1{width:48.384419pt;}
._20{width:51.114435pt;}
._2{width:54.549000pt;}
._63{width:61.259954pt;}
._24{width:63.734586pt;}
._1c{width:67.756477pt;}
._38{width:70.743282pt;}
._14{width:74.791934pt;}
._45{width:100.550787pt;}
._37{width:115.574820pt;}
._29{width:117.638381pt;}
._47{width:126.055426pt;}
._2e{width:133.897680pt;}
._40{width:136.235576pt;}
._19{width:141.372496pt;}
._5f{width:143.130910pt;}
._28{width:145.533661pt;}
._3b{width:151.406725pt;}
._2b{width:153.453915pt;}
._18{width:163.688776pt;}
._34{width:168.320140pt;}
._35{width:169.949233pt;}
._36{width:174.824773pt;}
._27{width:180.020849pt;}
._3a{width:189.323794pt;}
._33{width:198.923802pt;}
._5b{width:200.847360pt;}
._62{width:205.103411pt;}
._1a{width:208.321336pt;}
._4e{width:214.380646pt;}
._5d{width:216.399658pt;}
._43{width:226.597379pt;}
._17{width:230.637616pt;}
._4d{width:239.534387pt;}
._3f{width:248.672621pt;}
._2c{width:255.786434pt;}
._39{width:261.469309pt;}
._4c{width:264.592486pt;}
._2a{width:283.681714pt;}
._5a{width:326.376960pt;}
._61{width:330.585190pt;}
._4a{width:343.736008pt;}
._5e{width:355.356365pt;}
._60{width:393.613005pt;}
._23{width:402.645133pt;}
._32{width:412.683980pt;}
._1d{width:429.025170pt;}
._5c{width:477.012480pt;}
._3e{width:520.415650pt;}
._13{width:552.330240pt;}
._48{width:578.724357pt;}
._25{width:593.186487pt;}
._46{width:603.186179pt;}
._4b{width:703.740443pt;}
._44{width:778.927619pt;}
._49{width:979.130880pt;}
._56{width:1055.061906pt;}
._55{width:1149.173241pt;}
._16{width:1229.648451pt;}
._1e{width:1277.723038pt;}
._3d{width:1317.144803pt;}
._22{width:1325.165964pt;}
._57{width:1343.270998pt;}
._4f{width:1356.357859pt;}
._30{width:1457.272122pt;}
._42{width:1526.628319pt;}
._54{width:1646.087959pt;}
._1f{width:1649.260170pt;}
._59{width:1688.297786pt;}
._58{width:1737.648851pt;}
._51{width:1746.093911pt;}
._53{width:1894.405052pt;}
._50{width:1910.345318pt;}
.fs8{font-size:31.880533pt;}
.fs5{font-size:42.507200pt;}
.fs7{font-size:47.820800pt;}
.fs4{font-size:53.133867pt;}
.fs6{font-size:58.181867pt;}
.fs3{font-size:63.761067pt;}
.fs2{font-size:76.513067pt;}
.fs1{font-size:110.200000pt;}
.fs0{font-size:132.197867pt;}
.y152{bottom:-76.192000pt;}
.y261{bottom:-12.888000pt;}
.y0{bottom:-0.666667pt;}
.y2e3{bottom:5.361333pt;}
.y50{bottom:5.417333pt;}
.y22e{bottom:5.809333pt;}
.y19e{bottom:6.501333pt;}
.y8c{bottom:6.637333pt;}
.y13f{bottom:6.816000pt;}
.y14f{bottom:7.174667pt;}
.y319{bottom:7.242667pt;}
.y1c1{bottom:7.264000pt;}
.y1e4{bottom:7.285333pt;}
.y269{bottom:7.397333pt;}
.y1b4{bottom:7.701333pt;}
.y300{bottom:8.392000pt;}
.y26b{bottom:8.516000pt;}
.y256{bottom:8.518667pt;}
.y18b{bottom:8.522667pt;}
.y239{bottom:8.530667pt;}
.y2bd{bottom:8.810667pt;}
.y328{bottom:8.865333pt;}
.y48{bottom:9.022667pt;}
.yb7{bottom:9.077333pt;}
.y6c{bottom:10.417333pt;}
.y2b4{bottom:10.737333pt;}
.y157{bottom:10.814667pt;}
.y2a7{bottom:10.985333pt;}
.y176{bottom:11.168000pt;}
.y1d6{bottom:11.176000pt;}
.y12c{bottom:11.213333pt;}
.y16b{bottom:12.022667pt;}
.y200{bottom:12.422667pt;}
.y278{bottom:12.577333pt;}
.y244{bottom:12.654667pt;}
.y331{bottom:12.788000pt;}
.ye8{bottom:13.169333pt;}
.y181{bottom:13.225333pt;}
.y27d{bottom:13.398667pt;}
.y7e{bottom:14.050667pt;}
.y164{bottom:14.581333pt;}
.y223{bottom:14.986667pt;}
.y1ac{bottom:16.925333pt;}
.y134{bottom:17.012000pt;}
.y151{bottom:17.230667pt;}
.y2ae{bottom:17.250667pt;}
.y13{bottom:17.357333pt;}
.ya0{bottom:17.737333pt;}
.y291{bottom:17.942667pt;}
.y96{bottom:20.246667pt;}
.y122{bottom:20.944000pt;}
.y322{bottom:21.396000pt;}
.y268{bottom:21.544000pt;}
.yc2{bottom:22.550667pt;}
.y238{bottom:23.042667pt;}
.y14e{bottom:23.978667pt;}
.y12{bottom:24.229333pt;}
.y260{bottom:24.742667pt;}
.y6b{bottom:24.929333pt;}
.y20b{bottom:25.081333pt;}
.y18a{bottom:25.326667pt;}
.y47{bottom:25.825333pt;}
.y22d{bottom:26.585333pt;}
.y156{bottom:27.618667pt;}
.y2ff{bottom:27.853333pt;}
.y24f{bottom:27.957333pt;}
.y1d5{bottom:27.980000pt;}
.y7d{bottom:28.562667pt;}
.y16a{bottom:28.826667pt;}
.y288{bottom:29.150667pt;}
.y277{bottom:29.381333pt;}
.y180{bottom:30.029333pt;}
.yf2{bottom:30.056000pt;}
.y196{bottom:30.753333pt;}
.y163{bottom:31.385333pt;}
.y1ff{bottom:31.882667pt;}
.y1ab{bottom:33.729333pt;}
.y25{bottom:33.774667pt;}
.y290{bottom:34.745333pt;}
.y121{bottom:35.456000pt;}
.y267{bottom:35.692000pt;}
.y2fb{bottom:35.828000pt;}
.yd5{bottom:36.141333pt;}
.y100{bottom:36.698667pt;}
.y237{bottom:37.554667pt;}
.y150{bottom:38.005333pt;}
.y2ad{bottom:38.026667pt;}
.y109{bottom:38.657333pt;}
.y2e{bottom:39.194667pt;}
.y6a{bottom:39.441333pt;}
.y147{bottom:39.706667pt;}
.yb6{bottom:39.930667pt;}
.y2d2{bottom:40.040000pt;}
.y95{bottom:41.021333pt;}
.y330{bottom:41.533333pt;}
.y21c{bottom:42.017333pt;}
.y46{bottom:42.629333pt;}
.y7c{bottom:43.074667pt;}
.yc1{bottom:43.326667pt;}
.y1e3{bottom:43.453333pt;}
.y2c8{bottom:45.341333pt;}
.y243{bottom:45.392000pt;}
.y25f{bottom:45.517333pt;}
.y169{bottom:45.629333pt;}
.y20a{bottom:45.857333pt;}
.y8b{bottom:46.149333pt;}
.y1c0{bottom:46.626667pt;}
.y11{bottom:47.442667pt;}
.y162{bottom:48.188000pt;}
.y2ee{bottom:48.680000pt;}
.y24e{bottom:48.733333pt;}
.y1bd{bottom:49.504000pt;}
.y287{bottom:49.925333pt;}
.y307{bottom:49.968000pt;}
.y1aa{bottom:50.532000pt;}
.yd4{bottom:50.653333pt;}
.yf1{bottom:50.830667pt;}
.y195{bottom:51.529333pt;}
.y112{bottom:52.005333pt;}
.y236{bottom:52.066667pt;}
.y9f{bottom:52.317333pt;}
.y1ca{bottom:53.165333pt;}
.y13e{bottom:53.574667pt;}
.y69{bottom:53.953333pt;}
.yb5{bottom:54.442667pt;}
.y22c{bottom:54.645333pt;}
.y175{bottom:54.961333pt;}
.y2bc{bottom:55.480000pt;}
.y12b{bottom:55.978667pt;}
.y2de{bottom:56.600000pt;}
.y2fa{bottom:56.602667pt;}
.y39{bottom:57.184000pt;}
.y6{bottom:57.414667pt;}
.yff{bottom:57.473333pt;}
.y2a1{bottom:57.476000pt;}
.y7b{bottom:57.586667pt;}
.y327{bottom:57.930667pt;}
.y1e2{bottom:57.965333pt;}
.y321{bottom:58.112000pt;}
.y21b{bottom:58.821333pt;}
.y24{bottom:59.378667pt;}
.y108{bottom:59.432000pt;}
.y1b3{bottom:60.349333pt;}
.y146{bottom:60.481333pt;}
.y2d1{bottom:60.816000pt;}
.y32f{bottom:62.308000pt;}
.y8a{bottom:62.953333pt;}
.y19d{bottom:63.341333pt;}
.y318{bottom:63.358667pt;}
.y242{bottom:63.722667pt;}
.y2ac{bottom:64.114667pt;}
.y120{bottom:64.480000pt;}
.y161{bottom:64.992000pt;}
.yd3{bottom:65.165333pt;}
.y155{bottom:65.802667pt;}
.y2c7{bottom:66.117333pt;}
.y25e{bottom:66.293333pt;}
.y235{bottom:66.578667pt;}
.y209{bottom:66.632000pt;}
.y1a9{bottom:67.336000pt;}
.y1bf{bottom:67.402667pt;}
.y276{bottom:67.676000pt;}
.ye7{bottom:68.340000pt;}
.y68{bottom:68.465333pt;}
.yb4{bottom:68.622667pt;}
.y58{bottom:69.290667pt;}
.y2ed{bottom:69.454667pt;}
.y24d{bottom:69.508000pt;}
.y1c9{bottom:69.969333pt;}
.y1bc{bottom:70.280000pt;}
.y10{bottom:70.656000pt;}
.y215{bottom:70.749333pt;}
.y22b{bottom:71.449333pt;}
.y7a{bottom:72.098667pt;}
.y194{bottom:72.304000pt;}
.y1e1{bottom:72.477333pt;}
.y2dd{bottom:73.404000pt;}
.y13d{bottom:74.349333pt;}
.y299{bottom:74.482667pt;}
.yc0{bottom:74.728000pt;}
.y1fe{bottom:75.040000pt;}
.y21a{bottom:75.293333pt;}
.y94{bottom:75.710667pt;}
.y2b3{bottom:76.004000pt;}
.y189{bottom:76.069333pt;}
.y1b{bottom:76.105333pt;}
.y45{bottom:76.236000pt;}
.y2bb{bottom:76.256000pt;}
.y12a{bottom:76.754667pt;}
.y38{bottom:77.960000pt;}
.y9e{bottom:77.981333pt;}
.y2a0{bottom:78.252000pt;}
.y1eb{bottom:78.462667pt;}
.y286{bottom:78.670667pt;}
.y2d{bottom:78.780000pt;}
.y320{bottom:78.886667pt;}
.y4f{bottom:78.914667pt;}
.y11f{bottom:78.993333pt;}
.y255{bottom:79.613333pt;}
.y5{bottom:79.648000pt;}
.yd2{bottom:79.677333pt;}
.y89{bottom:79.756000pt;}
.ycc{bottom:79.853333pt;}
.y317{bottom:80.162667pt;}
.y266{bottom:80.838667pt;}
.y234{bottom:81.090667pt;}
.y1b2{bottom:81.124000pt;}
.y111{bottom:81.278667pt;}
.y2d0{bottom:81.590667pt;}
.y160{bottom:81.796000pt;}
.y222{bottom:81.841333pt;}
.y241{bottom:82.054667pt;}
.ya8{bottom:82.062667pt;}
.yf0{bottom:82.233333pt;}
.y154{bottom:82.605333pt;}
.y67{bottom:82.977333pt;}
.y174{bottom:83.528000pt;}
.y305{bottom:83.613333pt;}
.y1a8{bottom:83.808000pt;}
.y2ab{bottom:84.890667pt;}
.y23{bottom:84.982667pt;}
.ycd{bottom:85.132000pt;}
.y14d{bottom:85.348000pt;}
.y79{bottom:86.610667pt;}
.y1c8{bottom:86.773333pt;}
.y2c6{bottom:86.892000pt;}
.y1e0{bottom:86.989333pt;}
.y25d{bottom:87.068000pt;}
.y214{bottom:87.553333pt;}
.y22a{bottom:87.920000pt;}
.y107{bottom:88.177333pt;}
.y275{bottom:88.450667pt;}
.yfe{bottom:88.876000pt;}
.y2dc{bottom:90.206667pt;}
.y298{bottom:90.953333pt;}
.y32e{bottom:91.053333pt;}
.y326{bottom:91.989333pt;}
.y44{bottom:93.040000pt;}
.ybf{bottom:93.060000pt;}
.y193{bottom:93.080000pt;}
.y11e{bottom:93.505333pt;}
.yf{bottom:93.869333pt;}
.ye6{bottom:93.944000pt;}
.y57{bottom:94.050667pt;}
.yd1{bottom:94.189333pt;}
.y188{bottom:94.401333pt;}
.y19c{bottom:94.956000pt;}
.y13c{bottom:95.125333pt;}
.y233{bottom:95.270667pt;}
.y30f{bottom:95.668000pt;}
.y1fd{bottom:95.816000pt;}
.y219{bottom:96.081333pt;}
.y93{bottom:96.486667pt;}
.y88{bottom:96.560000pt;}
.y2b2{bottom:96.778667pt;}
.y1f1{bottom:96.821333pt;}
.y2fe{bottom:97.302667pt;}
.y66{bottom:97.489333pt;}
.y24c{bottom:97.556000pt;}
.y1bb{bottom:98.328000pt;}
.y15f{bottom:98.598667pt;}
.y29f{bottom:99.026667pt;}
.y1ea{bottom:99.238667pt;}
.y1a{bottom:99.318667pt;}
.y153{bottom:99.409333pt;}
.y285{bottom:99.446667pt;}
.y4e{bottom:99.689333pt;}
.y173{bottom:100.330667pt;}
.y254{bottom:100.388000pt;}
.ydb{bottom:100.440000pt;}
.y208{bottom:100.690667pt;}
.y2ec{bottom:100.810667pt;}
.y78{bottom:101.122667pt;}
.y28f{bottom:101.136000pt;}
.y17f{bottom:101.421333pt;}
.y1df{bottom:101.501333pt;}
.y1b1{bottom:101.900000pt;}
.y2a6{bottom:102.154667pt;}
.y221{bottom:102.617333pt;}
.yef{bottom:103.009333pt;}
.y1c7{bottom:103.576000pt;}
.y9d{bottom:103.645333pt;}
.y168{bottom:103.945333pt;}
.yb3{bottom:104.206667pt;}
.y213{bottom:104.357333pt;}
.y304{bottom:104.389333pt;}
.y1a7{bottom:104.596000pt;}
.y2ba{bottom:104.968000pt;}
.y145{bottom:105.166667pt;}
.y229{bottom:106.052000pt;}
.y14c{bottom:106.124000pt;}
.y2cf{bottom:106.318667pt;}
.y274{bottom:106.569333pt;}
.y2f9{bottom:106.601333pt;}
.y129{bottom:107.458667pt;}
.y25c{bottom:107.844000pt;}
.y11d{bottom:108.017333pt;}
.yd0{bottom:108.701333pt;}
.y170{bottom:108.733333pt;}
.y106{bottom:108.953333pt;}
.y133{bottom:109.769333pt;}
.y43{bottom:109.844000pt;}
.yac{bottom:110.317333pt;}
.y110{bottom:110.552000pt;}
.y22{bottom:110.586667pt;}
.ybe{bottom:111.390667pt;}
.y32d{bottom:111.829333pt;}
.y65{bottom:112.002667pt;}
.y265{bottom:112.241333pt;}
.ye5{bottom:112.274667pt;}
.y19b{bottom:113.288000pt;}
.y87{bottom:113.364000pt;}
.y2aa{bottom:113.602667pt;}
.y316{bottom:113.769333pt;}
.y2f4{bottom:114.413333pt;}
.y2db{bottom:114.521333pt;}
.y240{bottom:114.964000pt;}
.y207{bottom:115.202667pt;}
.y15e{bottom:115.402667pt;}
.y31f{bottom:115.602667pt;}
.y77{bottom:115.634667pt;}
.y1de{bottom:116.013333pt;}
.yfd{bottom:116.213333pt;}
.y30e{bottom:116.442667pt;}
.y335{bottom:116.582667pt;}
.y1fc{bottom:116.590667pt;}
.y1d3{bottom:116.641333pt;}
.y218{bottom:116.857333pt;}
.ye{bottom:117.081333pt;}
.y172{bottom:117.134667pt;}
.y2c{bottom:117.228000pt;}
.y92{bottom:117.261333pt;}
.y37{bottom:117.332000pt;}
.y1f0{bottom:117.596000pt;}
.y2eb{bottom:117.613333pt;}
.y17e{bottom:118.225333pt;}
.y24b{bottom:118.332000pt;}
.y232{bottom:118.384000pt;}
.y56{bottom:118.810667pt;}
.y297{bottom:119.014667pt;}
.y1ba{bottom:119.102667pt;}
.y187{bottom:119.373333pt;}
.y284{bottom:120.221333pt;}
.y212{bottom:120.828000pt;}
.y253{bottom:121.164000pt;}
.y192{bottom:121.792000pt;}
.y28e{bottom:121.910667pt;}
.y306{bottom:122.529333pt;}
.y19{bottom:122.532000pt;}
.ycf{bottom:123.213333pt;}
.y26a{bottom:123.392000pt;}
.y144{bottom:123.498667pt;}
.y128{bottom:124.262667pt;}
.y167{bottom:124.720000pt;}
.y2b1{bottom:124.826667pt;}
.y2b9{bottom:125.744000pt;}
.y1f6{bottom:125.942667pt;}
.y325{bottom:126.049333pt;}
.y64{bottom:126.514667pt;}
.y42{bottom:126.646667pt;}
.y273{bottom:127.345333pt;}
.y2f8{bottom:127.377333pt;}
.y9c{bottom:129.308000pt;}
.y206{bottom:129.382667pt;}
.ya7{bottom:129.404000pt;}
.yd9{bottom:129.525333pt;}
.ybd{bottom:129.721333pt;}
.y105{bottom:129.728000pt;}
.y228{bottom:129.969333pt;}
.y76{bottom:130.146667pt;}
.y86{bottom:130.166667pt;}
.yb2{bottom:130.508000pt;}
.y1dd{bottom:130.525333pt;}
.y132{bottom:130.545333pt;}
.y315{bottom:130.573333pt;}
.ye4{bottom:130.605333pt;}
.y1b0{bottom:130.612000pt;}
.yab{bottom:131.093333pt;}
.y2f3{bottom:131.217333pt;}
.y2c5{bottom:131.577333pt;}
.yee{bottom:131.721333pt;}
.y15d{bottom:132.206667pt;}
.y27c{bottom:132.724000pt;}
.yfc{bottom:133.016000pt;}
.y1d2{bottom:133.444000pt;}
.y10f{bottom:133.612000pt;}
.y1d4{bottom:133.805333pt;}
.y171{bottom:133.938667pt;}
.y2ea{bottom:134.417333pt;}
.y13b{bottom:134.497333pt;}
.y1a6{bottom:134.682667pt;}
.y17d{bottom:134.696000pt;}
.yda{bottom:134.804000pt;}
.y23f{bottom:135.738667pt;}
.y1e9{bottom:135.953333pt;}
.y21{bottom:136.190667pt;}
.y31e{bottom:136.377333pt;}
.y25b{bottom:136.556000pt;}
.y2ce{bottom:137.022667pt;}
.y11c{bottom:137.041333pt;}
.y1c6{bottom:137.184000pt;}
.y334{bottom:137.358667pt;}
.yce{bottom:137.393333pt;}
.y217{bottom:137.632000pt;}
.y186{bottom:137.705333pt;}
.y2a5{bottom:138.070667pt;}
.y36{bottom:138.106667pt;}
.y29e{bottom:138.398667pt;}
.y309{bottom:138.502667pt;}
.y24a{bottom:139.106667pt;}
.yd{bottom:140.294667pt;}
.y32c{bottom:140.541333pt;}
.y63{bottom:141.026667pt;}
.y127{bottom:141.066667pt;}
.y2a9{bottom:141.650667pt;}
.y2fd{bottom:141.989333pt;}
.y2b{bottom:142.832000pt;}
.y41{bottom:143.450667pt;}
.y31{bottom:143.500000pt;}
.y55{bottom:143.572000pt;}
.y205{bottom:143.894667pt;}
.y4d{bottom:144.374667pt;}
.y220{bottom:144.645333pt;}
.y75{bottom:144.660000pt;}
.y19a{bottom:144.902667pt;}
.y1dc{bottom:145.037333pt;}
.y2b0{bottom:145.602667pt;}
.y18{bottom:145.744000pt;}
.y91{bottom:145.974667pt;}
.y1f5{bottom:146.717333pt;}
.y314{bottom:147.377333pt;}
.y2f2{bottom:148.020000pt;}
.ybc{bottom:148.053333pt;}
.y272{bottom:148.120000pt;}
.y283{bottom:148.966667pt;}
.y15c{bottom:149.009333pt;}
.y231{bottom:149.301333pt;}
.y143{bottom:149.800000pt;}
.yfb{bottom:149.820000pt;}
.y1d1{bottom:149.916000pt;}
.ya6{bottom:150.180000pt;}
.y191{bottom:150.504000pt;}
.y211{bottom:150.550667pt;}
.y28d{bottom:150.656000pt;}
.y296{bottom:151.048000pt;}
.y2e9{bottom:151.220000pt;}
.y131{bottom:151.320000pt;}
.y1a5{bottom:151.486667pt;}
.y11b{bottom:151.553333pt;}
.y2b8{bottom:151.832000pt;}
.y17c{bottom:152.130667pt;}
.y2c4{bottom:152.353333pt;}
.y14b{bottom:153.465333pt;}
.y27b{bottom:153.498667pt;}
.y2cd{bottom:153.826667pt;}
.y1c5{bottom:153.986667pt;}
.y226{bottom:154.044000pt;}
.ycb{bottom:154.197333pt;}
.y1ef{bottom:154.312000pt;}
.y9b{bottom:154.972000pt;}
.y13a{bottom:155.272000pt;}
.y2da{bottom:155.317333pt;}
.y62{bottom:155.538667pt;}
.y30d{bottom:155.814667pt;}
.y4{bottom:156.180000pt;}
.y23e{bottom:156.514667pt;}
.ye3{bottom:156.522667pt;}
.y1e8{bottom:156.729333pt;}
.yb1{bottom:156.809333pt;}
.y31d{bottom:157.153333pt;}
.y1f2{bottom:157.248000pt;}
.y126{bottom:157.869333pt;}
.y204{bottom:158.408000pt;}
.y104{bottom:158.441333pt;}
.yd8{bottom:158.610667pt;}
.y1fb{bottom:158.620000pt;}
.y185{bottom:158.660000pt;}
.y74{bottom:159.172000pt;}
.y29d{bottom:159.174667pt;}
.y1db{bottom:159.549333pt;}
.y249{bottom:159.882667pt;}
.y324{bottom:160.108000pt;}
.y40{bottom:160.254667pt;}
.y4c{bottom:160.846667pt;}
.ya2{bottom:161.417333pt;}
.y20{bottom:161.794667pt;}
.y303{bottom:162.358667pt;}
.y2a8{bottom:162.425333pt;}
.y16f{bottom:162.504000pt;}
.y1b9{bottom:162.881333pt;}
.y199{bottom:163.233333pt;}
.yc{bottom:163.508000pt;}
.y85{bottom:163.774667pt;}
.y313{bottom:163.848000pt;}
.y264{bottom:164.418667pt;}
.y2f1{bottom:164.492000pt;}
.yed{bottom:165.082667pt;}
.y21f{bottom:165.421333pt;}
.y230{bottom:165.773333pt;}
.y11a{bottom:166.065333pt;}
.y2af{bottom:166.377333pt;}
.ybb{bottom:166.384000pt;}
.yfa{bottom:166.624000pt;}
.y90{bottom:166.749333pt;}
.y210{bottom:167.353333pt;}
.y295{bottom:167.520000pt;}
.y2e8{bottom:167.692000pt;}
.y1d0{bottom:167.794667pt;}
.y1a4{bottom:167.958667pt;}
.y142{bottom:168.130667pt;}
.y54{bottom:168.332000pt;}
.y2a{bottom:168.436000pt;}
.yca{bottom:168.709333pt;}
.y271{bottom:168.896000pt;}
.y17{bottom:168.957333pt;}
.y252{bottom:169.137333pt;}
.y32b{bottom:169.253333pt;}
.y61{bottom:170.050667pt;}
.y10e{bottom:170.328000pt;}
.y2cc{bottom:170.630667pt;}
.y1c4{bottom:170.790667pt;}
.y225{bottom:170.848000pt;}
.ya5{bottom:170.954667pt;}
.y30{bottom:170.997333pt;}
.y190{bottom:171.278667pt;}
.y1af{bottom:171.942667pt;}
.y130{bottom:172.096000pt;}
.y2d9{bottom:172.120000pt;}
.y2a4{bottom:172.129333pt;}
.y2b7{bottom:172.608000pt;}
.ye2{bottom:173.326667pt;}
.y73{bottom:173.684000pt;}
.y1da{bottom:174.062667pt;}
.y14a{bottom:174.241333pt;}
.y125{bottom:174.673333pt;}
.y1ee{bottom:175.086667pt;}
.y30c{bottom:176.590667pt;}
.y3f{bottom:177.057333pt;}
.y282{bottom:177.346667pt;}
.y2f7{bottom:177.376000pt;}
.y25a{bottom:178.552000pt;}
.y17b{bottom:178.864000pt;}
.y35{bottom:179.056000pt;}
.y203{bottom:179.182667pt;}
.y28c{bottom:179.401333pt;}
.y4b{bottom:179.826667pt;}
.y29c{bottom:179.949333pt;}
.y84{bottom:180.577333pt;}
.y23d{bottom:181.241333pt;}
.y15b{bottom:182.617333pt;}
.y2c3{bottom:182.657333pt;}
.y302{bottom:183.133333pt;}
.y2e7{bottom:183.166667pt;}
.yc9{bottom:183.221333pt;}
.yf9{bottom:183.426667pt;}
.y2f{bottom:183.636000pt;}
.y1b8{bottom:183.657333pt;}
.y2e2{bottom:183.912000pt;}
.y20f{bottom:184.157333pt;}
.y135{bottom:184.330667pt;}
.y60{bottom:184.562667pt;}
.y312{bottom:184.637333pt;}
.yba{bottom:184.714667pt;}
.yb0{bottom:184.918667pt;}
.y263{bottom:185.193333pt;}
.y3{bottom:185.537333pt;}
.yec{bottom:185.857333pt;}
.yaa{bottom:186.405333pt;}
.y141{bottom:186.462667pt;}
.y2fc{bottom:186.674667pt;}
.y227{bottom:187.318667pt;}
.y333{bottom:187.357333pt;}
.y1f{bottom:187.398667pt;}
.y2cb{bottom:187.433333pt;}
.y166{bottom:187.524000pt;}
.y1c3{bottom:187.594667pt;}
.y9a{bottom:188.145333pt;}
.y72{bottom:188.196000pt;}
.y1d9{bottom:188.574667pt;}
.y248{bottom:188.594667pt;}
.y1a3{bottom:188.746667pt;}
.y2d8{bottom:188.924000pt;}
.y270{bottom:189.670667pt;}
.y251{bottom:189.912000pt;}
.ye1{bottom:190.129333pt;}
.y16e{bottom:191.070667pt;}
.y22f{bottom:191.177333pt;}
.y124{bottom:191.477333pt;}
.y18f{bottom:192.054667pt;}
.y16{bottom:192.170667pt;}
.y1ae{bottom:192.718667pt;}
.y103{bottom:193.130667pt;}
.y184{bottom:193.349333pt;}
.y2b6{bottom:193.382667pt;}
.y1e7{bottom:193.445333pt;}
.y53{bottom:193.722667pt;}
.y3e{bottom:193.861333pt;}
.y29{bottom:194.040000pt;}
.y323{bottom:194.166667pt;}
.y139{bottom:194.645333pt;}
.y119{bottom:195.089333pt;}
.yd7{bottom:195.206667pt;}
.y31c{bottom:195.445333pt;}
.y1f4{bottom:195.541333pt;}
.y294{bottom:195.581333pt;}
.y17a{bottom:195.668000pt;}
.y83{bottom:197.381333pt;}
.yc8{bottom:197.733333pt;}
.y198{bottom:197.786667pt;}
.y32a{bottom:197.998667pt;}
.y2f6{bottom:198.152000pt;}
.y2e1{bottom:198.424000pt;}
.y5f{bottom:199.074667pt;}
.yb{bottom:199.300000pt;}
.y259{bottom:199.326667pt;}
.y15a{bottom:199.420000pt;}
.y2c2{bottom:199.461333pt;}
.y10d{bottom:199.601333pt;}
.y2f0{bottom:199.638667pt;}
.y34{bottom:199.830667pt;}
.yc3{bottom:199.882667pt;}
.y202{bottom:199.958667pt;}
.y1be{bottom:199.990667pt;}
.yf8{bottom:200.230667pt;}
.y20e{bottom:200.629333pt;}
.y1fa{bottom:200.649333pt;}
.y8f{bottom:200.808000pt;}
.y2a3{bottom:200.841333pt;}
.y27a{bottom:202.322667pt;}
.y4a{bottom:202.458667pt;}
.y71{bottom:202.708000pt;}
.y1d8{bottom:202.754667pt;}
.y2d6{bottom:202.897333pt;}
.yaf{bottom:203.250667pt;}
.y311{bottom:203.861333pt;}
.y2ca{bottom:204.237333pt;}
.y1ce{bottom:205.153333pt;}
.y2d7{bottom:205.396000pt;}
.y247{bottom:205.397333pt;}
.y224{bottom:205.450667pt;}
.y262{bottom:205.969333pt;}
.yeb{bottom:206.633333pt;}
.ye0{bottom:206.933333pt;}
.y1ed{bottom:207.120000pt;}
.ya9{bottom:207.181333pt;}
.ya1{bottom:207.245333pt;}
.y21e{bottom:207.449333pt;}
.y123{bottom:207.948000pt;}
.y30b{bottom:207.993333pt;}
.y12f{bottom:208.114667pt;}
.y332{bottom:208.133333pt;}
.y28b{bottom:208.146667pt;}
.y118{bottom:209.602667pt;}
.y281{bottom:209.757333pt;}
.y23c{bottom:209.953333pt;}
.y140{bottom:210.106667pt;}
.y3d{bottom:210.665333pt;}
.y179{bottom:212.138667pt;}
.yc7{bottom:212.246667pt;}
.y1b7{bottom:212.301333pt;}
.y2e0{bottom:212.604000pt;}
.y1e{bottom:213.002667pt;}
.y216{bottom:213.241333pt;}
.y5e{bottom:213.586667pt;}
.y102{bottom:213.905333pt;}
.y183{bottom:214.125333pt;}
.y82{bottom:214.185333pt;}
.y1e6{bottom:214.220000pt;}
.y2e6{bottom:214.854667pt;}
.y26f{bottom:215.281333pt;}
.y15{bottom:215.382667pt;}
.yb9{bottom:216.117333pt;}
.y31b{bottom:216.220000pt;}
.y159{bottom:216.224000pt;}
.y2c1{bottom:216.265333pt;}
.y1f3{bottom:216.316000pt;}
.yf7{bottom:217.034667pt;}
.y70{bottom:217.220000pt;}
.ya4{bottom:218.297333pt;}
.y329{bottom:218.774667pt;}
.y1a2{bottom:218.833333pt;}
.y29b{bottom:219.321333pt;}
.y16d{bottom:219.636000pt;}
.y28{bottom:219.644000pt;}
.y2d5{bottom:219.701333pt;}
.y258{bottom:220.102667pt;}
.y2ef{bottom:220.413333pt;}
.y2c9{bottom:220.709333pt;}
.y201{bottom:220.733333pt;}
.y18e{bottom:220.766667pt;}
.y1c2{bottom:220.869333pt;}
.y149{bottom:221.584000pt;}
.y1cd{bottom:221.957333pt;}
.y2b5{bottom:222.094667pt;}
.y1cf{bottom:222.317333pt;}
.ya{bottom:222.512000pt;}
.y279{bottom:223.097333pt;}
.ydf{bottom:223.737333pt;}
.y117{bottom:224.114667pt;}
.y99{bottom:225.382667pt;}
.y1f9{bottom:225.621333pt;}
.yc6{bottom:226.758667pt;}
.yea{bottom:227.408000pt;}
.y3c{bottom:227.468000pt;}
.y1ec{bottom:227.896000pt;}
.y5d{bottom:228.098667pt;}
.y21d{bottom:228.225333pt;}
.y30a{bottom:228.768000pt;}
.y10c{bottom:228.876000pt;}
.y12e{bottom:228.889333pt;}
.y28a{bottom:228.922667pt;}
.yae{bottom:229.550667pt;}
.y2df{bottom:229.740000pt;}
.y1d7{bottom:229.852000pt;}
.y308{bottom:230.158667pt;}
.y280{bottom:230.532000pt;}
.y197{bottom:230.696000pt;}
.y23b{bottom:230.729333pt;}
.y81{bottom:230.988000pt;}
.y293{bottom:231.598667pt;}
.y178{bottom:232.230667pt;}
.y2c0{bottom:233.068000pt;}
.yf6{bottom:233.837333pt;}
.y138{bottom:234.017333pt;}
.y101{bottom:234.681333pt;}
.y8e{bottom:234.866667pt;}
.y52{bottom:235.054667pt;}
.y2a2{bottom:235.530667pt;}
.y1a1{bottom:235.637333pt;}
.y26e{bottom:236.057333pt;}
.y2{bottom:236.074667pt;}
.y2d4{bottom:236.504000pt;}
.y20d{bottom:236.660000pt;}
.y250{bottom:237.885333pt;}
.y1cc{bottom:238.428000pt;}
.y14{bottom:238.596000pt;}
.y1d{bottom:238.606667pt;}
.y116{bottom:238.626667pt;}
.y246{bottom:239.005333pt;}
.ya3{bottom:239.073333pt;}
.y33{bottom:239.202667pt;}
.y29a{bottom:240.097333pt;}
.yde{bottom:240.540000pt;}
.y257{bottom:240.877333pt;}
.y301{bottom:241.102667pt;}
.yc5{bottom:241.270667pt;}
.yd6{bottom:241.481333pt;}
.y310{bottom:241.509333pt;}
.y1ad{bottom:241.541333pt;}
.y182{bottom:242.173333pt;}
.y148{bottom:242.358667pt;}
.y5c{bottom:242.612000pt;}
.y2e5{bottom:243.600000pt;}
.y1f8{bottom:243.953333pt;}
.y3b{bottom:244.272000pt;}
.y27{bottom:245.248000pt;}
.y9{bottom:245.725333pt;}
.y98{bottom:246.158667pt;}
.y6f{bottom:246.244000pt;}
.y1e5{bottom:246.253333pt;}
.y1b6{bottom:246.990667pt;}
.yb8{bottom:247.520000pt;}
.y80{bottom:247.792000pt;}
.yad{bottom:247.882667pt;}
.y2f5{bottom:248.150667pt;}
.y18d{bottom:248.814667pt;}
.y49{bottom:249.000000pt;}
.y158{bottom:249.498667pt;}
.y2bf{bottom:249.540000pt;}
.y12d{bottom:249.665333pt;}
.yf5{bottom:250.641333pt;}
.y27f{bottom:251.308000pt;}
.y23a{bottom:251.504000pt;}
.y10b{bottom:251.936000pt;}
.y1a0{bottom:252.109333pt;}
.y292{bottom:252.374667pt;}
.y31a{bottom:252.936000pt;}
.y2d3{bottom:252.976000pt;}
.y115{bottom:253.138667pt;}
.y137{bottom:254.792000pt;}
.yc4{bottom:255.450667pt;}
.ye9{bottom:255.456000pt;}
.y245{bottom:255.476000pt;}
.y165{bottom:255.642667pt;}
.y16c{bottom:255.712000pt;}
.y51{bottom:255.829333pt;}
.y1cb{bottom:256.306667pt;}
.y26d{bottom:256.832000pt;}
.ydd{bottom:257.012000pt;}
.y5b{bottom:257.124000pt;}
.y20c{bottom:257.436000pt;}
.y289{bottom:257.634667pt;}
.y6e{bottom:260.424000pt;}
.y1f7{bottom:262.284000pt;}
.y177{bottom:262.948000pt;}
.y1{bottom:263.570667pt;}
.y1c{bottom:264.210667pt;}
.y7f{bottom:264.262667pt;}
.y97{bottom:266.933333pt;}
.yf4{bottom:267.445333pt;}
.y114{bottom:267.650667pt;}
.y1b5{bottom:267.766667pt;}
.y8d{bottom:268.925333pt;}
.y8{bottom:268.938667pt;}
.y18c{bottom:269.590667pt;}
.y26{bottom:270.852000pt;}
.y32{bottom:271.236000pt;}
.y5a{bottom:271.636000pt;}
.y10a{bottom:272.710667pt;}
.y19f{bottom:272.897333pt;}
.y2be{bottom:274.890667pt;}
.y136{bottom:275.568000pt;}
.y2e4{bottom:275.632000pt;}
.y27e{bottom:275.722667pt;}
.y6d{bottom:276.232000pt;}
.y3a{bottom:277.546667pt;}
.y26c{bottom:277.608000pt;}
.ydc{bottom:280.204000pt;}
.y113{bottom:281.830667pt;}
.yf3{bottom:283.916000pt;}
.y59{bottom:285.816000pt;}
.y7{bottom:314.865333pt;}
.h12{height:29.202446pt;}
.hf{height:29.499997pt;}
.ha{height:31.880400pt;}
.hd{height:33.187635pt;}
.h10{height:35.865600pt;}
.h9{height:36.768636pt;}
.hc{height:36.874903pt;}
.h13{height:37.003667pt;}
.h6{height:39.850400pt;}
.h11{height:40.378215pt;}
.hb{height:43.636400pt;}
.he{height:44.122658pt;}
.h5{height:44.250180pt;}
.h7{height:47.820800pt;}
.h4{height:53.941712pt;}
.h8{height:57.384800pt;}
.h3{height:77.691000pt;}
.h2{height:99.148400pt;}
.h0{height:340.157333pt;}
.h1{height:340.666667pt;}
.w0{width:604.724000pt;}
.w1{width:605.333333pt;}
.x0{left:0.000000pt;}
.x4{left:14.222667pt;}
.x2e{left:22.129333pt;}
.x1{left:37.794667pt;}
.x2a{left:39.168000pt;}
.x1a{left:41.780000pt;}
.x5{left:45.984000pt;}
.xb{left:48.300000pt;}
.x30{left:51.078667pt;}
.x10{left:54.732000pt;}
.x27{left:56.624000pt;}
.x37{left:58.117333pt;}
.xf{left:60.377333pt;}
.xd{left:62.901333pt;}
.x36{left:65.754667pt;}
.x6{left:67.314667pt;}
.x2c{left:69.212000pt;}
.xc{left:70.870667pt;}
.x9{left:73.862667pt;}
.x12{left:77.313333pt;}
.x38{left:81.026667pt;}
.x15{left:82.958667pt;}
.x32{left:85.650667pt;}
.x16{left:88.006667pt;}
.x2b{left:92.849333pt;}
.x3d{left:94.282667pt;}
.x1b{left:95.977333pt;}
.x45{left:98.272000pt;}
.x19{left:99.716000pt;}
.x2f{left:103.724000pt;}
.x20{left:110.508000pt;}
.x42{left:117.496000pt;}
.x35{left:119.208000pt;}
.x21{left:125.209333pt;}
.x14{left:128.122667pt;}
.x17{left:131.942667pt;}
.x1c{left:137.132000pt;}
.x8{left:142.362667pt;}
.x3c{left:146.350667pt;}
.x41{left:157.048000pt;}
.x1d{left:159.713333pt;}
.x11{left:161.996000pt;}
.x22{left:167.701333pt;}
.x34{left:170.630667pt;}
.x1e{left:182.296000pt;}
.x18{left:184.204000pt;}
.x1f{left:204.877333pt;}
.x2{left:211.340000pt;}
.xa{left:227.810667pt;}
.x39{left:231.620000pt;}
.x3e{left:248.901333pt;}
.x3a{left:255.366667pt;}
.x40{left:267.730667pt;}
.x33{left:269.777333pt;}
.x3f{left:274.008000pt;}
.x3b{left:280.472000pt;}
.x31{left:288.853333pt;}
.x23{left:298.898667pt;}
.x28{left:303.430667pt;}
.x43{left:304.786667pt;}
.xe{left:307.682667pt;}
.x2d{left:320.236000pt;}
.x29{left:322.260000pt;}
.x24{left:324.005333pt;}
.x44{left:329.892000pt;}
.x25{left:349.110667pt;}
.x26{left:374.216000pt;}
.x3{left:504.940000pt;}
.x13{left:565.870667pt;}
.x7{left:571.516000pt;}
}
</style>
<script>
/*
Copyright 2012 Mozilla Foundation
Copyright 2013 Lu Wang <coolwanglu@gmail.com>
Apachine License Version 2.0
*/
(function(){function b(a,b,e,f){var c=(a.className||"").split(/\s+/g);""===c[0]&&c.shift();var d=c.indexOf(b);0>d&&e&&c.push(b);0<=d&&f&&c.splice(d,1);a.className=c.join(" ");return 0<=d}if(!("classList"in document.createElement("div"))){var e={add:function(a){b(this.element,a,!0,!1)},contains:function(a){return b(this.element,a,!1,!1)},remove:function(a){b(this.element,a,!1,!0)},toggle:function(a){b(this.element,a,!0,!0)}};Object.defineProperty(HTMLElement.prototype,"classList",{get:function(){if(this._classList)return this._classList;
var a=Object.create(e,{element:{value:this,writable:!1,enumerable:!0}});Object.defineProperty(this,"_classList",{value:a,writable:!1,enumerable:!1});return a},enumerable:!0})}})();
</script>
<script>
(function(){/*
pdf2htmlEX.js: Core UI functions for pdf2htmlEX
Copyright 2012,2013 Lu Wang <coolwanglu@gmail.com> and other contributors
https://github.com/pdf2htmlEX/pdf2htmlEX/blob/master/share/LICENSE
*/
var pdf2htmlEX=window.pdf2htmlEX=window.pdf2htmlEX||{},CSS_CLASS_NAMES={page_frame:"pf",page_content_box:"pc",page_data:"pi",background_image:"bi",link:"l",input_radio:"ir",__dummy__:"no comma"},DEFAULT_CONFIG={container_id:"page-container",sidebar_id:"sidebar",outline_id:"outline",loading_indicator_cls:"loading-indicator",preload_pages:3,render_timeout:100,scale_step:0.9,key_handler:!0,hashchange_handler:!0,view_history_handler:!0,__dummy__:"no comma"},EPS=1E-6;
function invert(a){var b=a[0]*a[3]-a[1]*a[2];return[a[3]/b,-a[1]/b,-a[2]/b,a[0]/b,(a[2]*a[5]-a[3]*a[4])/b,(a[1]*a[4]-a[0]*a[5])/b]}function transform(a,b){return[a[0]*b[0]+a[2]*b[1]+a[4],a[1]*b[0]+a[3]*b[1]+a[5]]}function get_page_number(a){return parseInt(a.getAttribute("data-page-no"),16)}function disable_dragstart(a){for(var b=0,c=a.length;b<c;++b)a[b].addEventListener("dragstart",function(){return!1},!1)}
function clone_and_extend_objs(a){for(var b={},c=0,e=arguments.length;c<e;++c){var h=arguments[c],d;for(d in h)h.hasOwnProperty(d)&&(b[d]=h[d])}return b}
function Page(a){if(a){this.shown=this.loaded=!1;this.page=a;this.num=get_page_number(a);this.original_height=a.clientHeight;this.original_width=a.clientWidth;var b=a.getElementsByClassName(CSS_CLASS_NAMES.page_content_box)[0];b&&(this.content_box=b,this.original_scale=this.cur_scale=this.original_height/b.clientHeight,this.page_data=JSON.parse(a.getElementsByClassName(CSS_CLASS_NAMES.page_data)[0].getAttribute("data-data")),this.ctm=this.page_data.ctm,this.ictm=invert(this.ctm),this.loaded=!0)}}
Page.prototype={hide:function(){this.loaded&&this.shown&&(this.content_box.classList.remove("opened"),this.shown=!1)},show:function(){this.loaded&&!this.shown&&(this.content_box.classList.add("opened"),this.shown=!0)},rescale:function(a){this.cur_scale=0===a?this.original_scale:a;this.loaded&&(a=this.content_box.style,a.msTransform=a.webkitTransform=a.transform="scale("+this.cur_scale.toFixed(3)+")");a=this.page.style;a.height=this.original_height*this.cur_scale+"px";a.width=this.original_width*this.cur_scale+
"px"},view_position:function(){var a=this.page,b=a.parentNode;return[b.scrollLeft-a.offsetLeft-a.clientLeft,b.scrollTop-a.offsetTop-a.clientTop]},height:function(){return this.page.clientHeight},width:function(){return this.page.clientWidth}};function Viewer(a){this.config=clone_and_extend_objs(DEFAULT_CONFIG,0<arguments.length?a:{});this.pages_loading=[];this.init_before_loading_content();var b=this;document.addEventListener("DOMContentLoaded",function(){b.init_after_loading_content()},!1)}
Viewer.prototype={scale:1,cur_page_idx:0,first_page_idx:0,init_before_loading_content:function(){this.pre_hide_pages()},initialize_radio_button:function(){for(var a=document.getElementsByClassName(CSS_CLASS_NAMES.input_radio),b=0;b<a.length;b++)a[b].addEventListener("click",function(){this.classList.toggle("checked")})},init_after_loading_content:function(){this.sidebar=document.getElementById(this.config.sidebar_id);this.outline=document.getElementById(this.config.outline_id);this.container=document.getElementById(this.config.container_id);
this.loading_indicator=document.getElementsByClassName(this.config.loading_indicator_cls)[0];for(var a=!0,b=this.outline.childNodes,c=0,e=b.length;c<e;++c)if("ul"===b[c].nodeName.toLowerCase()){a=!1;break}a||this.sidebar.classList.add("opened");this.find_pages();if(0!=this.pages.length){disable_dragstart(document.getElementsByClassName(CSS_CLASS_NAMES.background_image));this.config.key_handler&&this.register_key_handler();var h=this;this.config.hashchange_handler&&window.addEventListener("hashchange",
function(a){h.navigate_to_dest(document.location.hash.substring(1))},!1);this.config.view_history_handler&&window.addEventListener("popstate",function(a){a.state&&h.navigate_to_dest(a.state)},!1);this.container.addEventListener("scroll",function(){h.update_page_idx();h.schedule_render(!0)},!1);[this.container,this.outline].forEach(function(a){a.addEventListener("click",h.link_handler.bind(h),!1)});this.initialize_radio_button();this.render()}},find_pages:function(){for(var a=[],b={},c=this.container.childNodes,
e=0,h=c.length;e<h;++e){var d=c[e];d.nodeType===Node.ELEMENT_NODE&&d.classList.contains(CSS_CLASS_NAMES.page_frame)&&(d=new Page(d),a.push(d),b[d.num]=a.length-1)}this.pages=a;this.page_map=b},load_page:function(a,b,c){var e=this.pages;if(!(a>=e.length||(e=e[a],e.loaded||this.pages_loading[a]))){var e=e.page,h=e.getAttribute("data-page-url");if(h){this.pages_loading[a]=!0;var d=e.getElementsByClassName(this.config.loading_indicator_cls)[0];"undefined"===typeof d&&(d=this.loading_indicator.cloneNode(!0),
d.classList.add("active"),e.appendChild(d));var f=this,g=new XMLHttpRequest;g.open("GET",h,!0);g.onload=function(){if(200===g.status||0===g.status){var b=document.createElement("div");b.innerHTML=g.responseText;for(var d=null,b=b.childNodes,e=0,h=b.length;e<h;++e){var p=b[e];if(p.nodeType===Node.ELEMENT_NODE&&p.classList.contains(CSS_CLASS_NAMES.page_frame)){d=p;break}}b=f.pages[a];f.container.replaceChild(d,b.page);b=new Page(d);f.pages[a]=b;b.hide();b.rescale(f.scale);disable_dragstart(d.getElementsByClassName(CSS_CLASS_NAMES.background_image));
f.schedule_render(!1);c&&c(b)}delete f.pages_loading[a]};g.send(null)}void 0===b&&(b=this.config.preload_pages);0<--b&&(f=this,setTimeout(function(){f.load_page(a+1,b)},0))}},pre_hide_pages:function(){var a="@media screen{."+CSS_CLASS_NAMES.page_content_box+"{display:none;}}",b=document.createElement("style");b.styleSheet?b.styleSheet.cssText=a:b.appendChild(document.createTextNode(a));document.head.appendChild(b)},render:function(){for(var a=this.container,b=a.scrollTop,c=a.clientHeight,a=b-c,b=
b+c+c,c=this.pages,e=0,h=c.length;e<h;++e){var d=c[e],f=d.page,g=f.offsetTop+f.clientTop,f=g+f.clientHeight;g<=b&&f>=a?d.loaded?d.show():this.load_page(e):d.hide()}},update_page_idx:function(){var a=this.pages,b=a.length;if(!(2>b)){for(var c=this.container,e=c.scrollTop,c=e+c.clientHeight,h=-1,d=b,f=d-h;1<f;){var g=h+Math.floor(f/2),f=a[g].page;f.offsetTop+f.clientTop+f.clientHeight>=e?d=g:h=g;f=d-h}this.first_page_idx=d;for(var g=h=this.cur_page_idx,k=0;d<b;++d){var f=a[d].page,l=f.offsetTop+f.clientTop,
f=f.clientHeight;if(l>c)break;f=(Math.min(c,l+f)-Math.max(e,l))/f;if(d===h&&Math.abs(f-1)<=EPS){g=h;break}f>k&&(k=f,g=d)}this.cur_page_idx=g}},schedule_render:function(a){if(void 0!==this.render_timer){if(!a)return;clearTimeout(this.render_timer)}var b=this;this.render_timer=setTimeout(function(){delete b.render_timer;b.render()},this.config.render_timeout)},register_key_handler:function(){var a=this;window.addEventListener("DOMMouseScroll",function(b){if(b.ctrlKey){b.preventDefault();var c=a.container,
e=c.getBoundingClientRect(),c=[b.clientX-e.left-c.clientLeft,b.clientY-e.top-c.clientTop];a.rescale(Math.pow(a.config.scale_step,b.detail),!0,c)}},!1);window.addEventListener("keydown",function(b){var c=!1,e=b.ctrlKey||b.metaKey,h=b.altKey;switch(b.keyCode){case 61:case 107:case 187:e&&(a.rescale(1/a.config.scale_step,!0),c=!0);break;case 173:case 109:case 189:e&&(a.rescale(a.config.scale_step,!0),c=!0);break;case 48:e&&(a.rescale(0,!1),c=!0);break;case 33:h?a.scroll_to(a.cur_page_idx-1):a.container.scrollTop-=
a.container.clientHeight;c=!0;break;case 34:h?a.scroll_to(a.cur_page_idx+1):a.container.scrollTop+=a.container.clientHeight;c=!0;break;case 35:a.container.scrollTop=a.container.scrollHeight;c=!0;break;case 36:a.container.scrollTop=0,c=!0}c&&b.preventDefault()},!1)},rescale:function(a,b,c){var e=this.scale;this.scale=a=0===a?1:b?e*a:a;c||(c=[0,0]);b=this.container;c[0]+=b.scrollLeft;c[1]+=b.scrollTop;for(var h=this.pages,d=h.length,f=this.first_page_idx;f<d;++f){var g=h[f].page;if(g.offsetTop+g.clientTop>=
c[1])break}g=f-1;0>g&&(g=0);var g=h[g].page,k=g.clientWidth,f=g.clientHeight,l=g.offsetLeft+g.clientLeft,m=c[0]-l;0>m?m=0:m>k&&(m=k);k=g.offsetTop+g.clientTop;c=c[1]-k;0>c?c=0:c>f&&(c=f);for(f=0;f<d;++f)h[f].rescale(a);b.scrollLeft+=m/e*a+g.offsetLeft+g.clientLeft-m-l;b.scrollTop+=c/e*a+g.offsetTop+g.clientTop-c-k;this.schedule_render(!0)},fit_width:function(){var a=this.cur_page_idx;this.rescale(this.container.clientWidth/this.pages[a].width(),!0);this.scroll_to(a)},fit_height:function(){var a=this.cur_page_idx;
this.rescale(this.container.clientHeight/this.pages[a].height(),!0);this.scroll_to(a)},get_containing_page:function(a){for(;a;){if(a.nodeType===Node.ELEMENT_NODE&&a.classList.contains(CSS_CLASS_NAMES.page_frame)){a=get_page_number(a);var b=this.page_map;return a in b?this.pages[b[a]]:null}a=a.parentNode}return null},link_handler:function(a){var b=a.target,c=b.getAttribute("data-dest-detail");if(c){if(this.config.view_history_handler)try{var e=this.get_current_view_hash();window.history.replaceState(e,
"","#"+e);window.history.pushState(c,"","#"+c)}catch(h){}this.navigate_to_dest(c,this.get_containing_page(b));a.preventDefault()}},navigate_to_dest:function(a,b){try{var c=JSON.parse(a)}catch(e){return}if(c instanceof Array){var h=c[0],d=this.page_map;if(h in d){for(var f=d[h],h=this.pages[f],d=2,g=c.length;d<g;++d){var k=c[d];if(null!==k&&"number"!==typeof k)return}for(;6>c.length;)c.push(null);var g=b||this.pages[this.cur_page_idx],d=g.view_position(),d=transform(g.ictm,[d[0],g.height()-d[1]]),
g=this.scale,l=[0,0],m=!0,k=!1,n=this.scale;switch(c[1]){case "XYZ":l=[null===c[2]?d[0]:c[2]*n,null===c[3]?d[1]:c[3]*n];g=c[4];if(null===g||0===g)g=this.scale;k=!0;break;case "Fit":case "FitB":l=[0,0];k=!0;break;case "FitH":case "FitBH":l=[0,null===c[2]?d[1]:c[2]*n];k=!0;break;case "FitV":case "FitBV":l=[null===c[2]?d[0]:c[2]*n,0];k=!0;break;case "FitR":l=[c[2]*n,c[5]*n],m=!1,k=!0}if(k){this.rescale(g,!1);var p=this,c=function(a){l=transform(a.ctm,l);m&&(l[1]=a.height()-l[1]);p.scroll_to(f,l)};h.loaded?
c(h):(this.load_page(f,void 0,c),this.scroll_to(f))}}}},scroll_to:function(a,b){var c=this.pages;if(!(0>a||a>=c.length)){c=c[a].view_position();void 0===b&&(b=[0,0]);var e=this.container;e.scrollLeft+=b[0]-c[0];e.scrollTop+=b[1]-c[1]}},get_current_view_hash:function(){var a=[],b=this.pages[this.cur_page_idx];a.push(b.num);a.push("XYZ");var c=b.view_position(),c=transform(b.ictm,[c[0],b.height()-c[1]]);a.push(c[0]/this.scale);a.push(c[1]/this.scale);a.push(this.scale);return JSON.stringify(a)}};
pdf2htmlEX.Viewer=Viewer;})();
</script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar">
<div id="outline">
<ul><li><a class="l" href="#pf6" data-dest-detail='[6,"XYZ",28.346,255.118,null]'>I/O Operations</a><ul><li><a class="l" href="#pfa" data-dest-detail='[10,"XYZ",28.346,228.21,null]'>printf</a></li><li><a class="l" href="#pfb" data-dest-detail='[11,"XYZ",28.346,212.909,null]'>Memory Mapped I/O</a></li><li><a class="l" href="#pf10" data-dest-detail='[16,"XYZ",28.346,228.21,null]'>Speed Up Raw Data Loading</a></li></ul></li><li><a class="l" href="#pf12" data-dest-detail='[18,"XYZ",28.346,255.118,null]'>Memory Optimizations</a><ul><li><a class="l" href="#pf13" data-dest-detail='[19,"XYZ",28.346,203.33,null]'>Heap Memory</a></li><li><a class="l" href="#pf14" data-dest-detail='[20,"XYZ",28.346,179.411,null]'>Stack Memory</a></li><li><a class="l" href="#pf15" data-dest-detail='[21,"XYZ",28.346,228.21,null]'>constexpr vs. static constexpr</a></li><li><a class="l" href="#pf16" data-dest-detail='[22,"XYZ",28.346,228.21,null]'>Cache Utilization</a></li><li><a class="l" href="#pf1a" data-dest-detail='[26,"XYZ",28.346,228.21,null]'>Memory Alignment</a></li><li><a class="l" href="#pf1f" data-dest-detail='[31,"XYZ",28.346,228.21,null]'>Memory Prefetch</a></li></ul></li><li><a class="l" href="#pf21" data-dest-detail='[33,"XYZ",28.346,255.118,null]'>Arithmetic Types</a><ul><li><a class="l" href="#pf23" data-dest-detail='[35,"XYZ",28.346,228.21,null]'>Data Types</a></li><li><a class="l" href="#pf24" data-dest-detail='[36,"XYZ",28.346,228.21,null]'>Arithmetic Operations</a></li><li><a class="l" href="#pf29" data-dest-detail='[41,"XYZ",28.346,228.21,null]'>Conversion</a></li><li><a class="l" href="#pf2a" data-dest-detail='[42,"XYZ",28.346,228.21,null]'>Floating-Point</a></li><li><a class="l" href="#pf2c" data-dest-detail='[44,"XYZ",28.346,228.21,null]'>Compiler Intrinsic Functions</a></li><li><a class="l" href="#pf32" data-dest-detail='[50,"XYZ",28.346,228.21,null]'>Value in a Range</a></li><li><a class="l" href="#pf34" data-dest-detail='[52,"XYZ",28.346,228.21,null]'>Lookup Table</a></li></ul></li><li><a class="l" href="#pf37" data-dest-detail='[55,"XYZ",28.346,255.118,null]'>Control Flow</a><ul><li><a class="l" href="#pf39" data-dest-detail='[57,"XYZ",28.346,183.273,null]'>Branches</a></li><li><a class="l" href="#pf3c" data-dest-detail='[60,"XYZ",28.346,214.113,null]'>Branch Hints - [[likely]] / [[unlikely]]</a></li><li><a class="l" href="#pf3d" data-dest-detail='[61,"XYZ",28.346,228.21,null]'>Signed/Unsigned Integers</a></li><li><a class="l" href="#pf3e" data-dest-detail='[62,"XYZ",28.346,228.21,null]'>Loops</a></li><li><a class="l" href="#pf3f" data-dest-detail='[63,"XYZ",28.346,228.21,null]'>Loop Hoisting</a></li><li><a class="l" href="#pf40" data-dest-detail='[64,"XYZ",28.346,228.21,null]'>Loop Unrolling</a></li><li><a class="l" href="#pf42" data-dest-detail='[66,"XYZ",28.346,228.21,null]'>Assertions</a></li><li><a class="l" href="#pf43" data-dest-detail='[67,"XYZ",28.346,228.21,null]'>Compiler Hints - [[assume]]/std::unreachable()</a></li><li><a class="l" href="#pf44" data-dest-detail='[68,"XYZ",28.346,199.45,null]'>Recursion</a></li></ul></li><li><a class="l" href="#pf46" data-dest-detail='[70,"XYZ",28.346,255.118,null]'>Functions</a><ul><li><a class="l" href="#pf47" data-dest-detail='[71,"XYZ",28.346,228.21,null]'>Function Call Cost</a></li><li><a class="l" href="#pf48" data-dest-detail='[72,"XYZ",28.346,228.21,null]'>Argument Passing</a></li><li><a class="l" href="#pf4c" data-dest-detail='[76,"XYZ",28.346,228.21,null]'>Function Inlining</a></li><li><a class="l" href="#pf51" data-dest-detail='[81,"XYZ",28.346,228.21,null]'>Pure Functions</a></li><li><a class="l" href="#pf53" data-dest-detail='[83,"XYZ",28.346,228.21,null]'>Constant Functions</a></li><li><a class="l" href="#pf54" data-dest-detail='[84,"XYZ",28.346,228.21,null]'>Pointers Aliasing</a></li></ul></li><li><a class="l" href="#pf58" data-dest-detail='[88,"XYZ",28.346,255.118,null]'>Object-Oriented Programming</a></li><li><a class="l" href="#pf5f" data-dest-detail='[95,"XYZ",28.346,255.118,null]'>Std Library and Other Language Aspects</a></li></ul></div>
</div>
<div id="page-container">
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">Mo<span class="_ _0"></span>dern<span class="_ _1"> </span>C++</div><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0">Programming</div><div class="t m0 x1 h3 y3 ff2 fs1 fc0 sc0 ls0 ws0">24.<span class="_ _2"> </span>Perf<span class="_ _3"></span>ormance<span class="_ _4"> </span>Optimiza<span class="_ _5"></span>tion<span class="_ _4"> </span>I<span class="_ _0"></span>I</div><div class="t m0 x2 h4 y4 ff2 fs2 fc0 sc0 ls0 ws0">Code<span class="_ _6"> </span>Optimiza<span class="_ _7"></span>tion</div><div class="t m0 x1 h5 y5 ff3 fs3 fc0 sc0 ls0 ws0">F<span class="_ _3"></span>ederico<span class="_ _8"> </span>Busato</div><div class="t m0 x3 h6 y6 ff4 fs4 fc0 sc0 ls0 ws0">2026-01-06</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">T<span class="_ _7"></span>able<span class="_ _8"> </span>of<span class="_ _9"> </span>Contents</div><div class="t m0 x5 h8 y8 ff1 fs4 fc2 sc0 ls0 ws0">1<span class="_ _a"> </span><span class="fs2 fc0">I/O<span class="_ _6"> </span>Op<span class="_ _b"></span>erations</span></div><div class="t m0 x6 h9 y9 ff5 fs4 fc0 sc0 ls0 ws0">printf</div><div class="t m0 x6 h6 ya ff4 fs4 fc0 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _c"> </span>Mapp<span class="_ _b"></span>ed<span class="_ _c"> </span>I/O</div><div class="t m0 x6 h6 yb ff4 fs4 fc0 sc0 ls0 ws0">Sp<span class="_ _b"></span>eed<span class="_ _c"> </span>Up<span class="_ _d"> </span>Ra<span class="_ _3"></span>w<span class="_ _c"> </span>Data<span class="_ _d"> </span>Loading</div><div class="t m0 x5 h8 yc ff1 fs4 fc2 sc0 ls0 ws0">2<span class="_ _a"> </span><span class="fs2 fc0">Memo<span class="_ _3"></span>ry<span class="_ _6"> </span>Optimizations</span></div><div class="t m0 x6 h6 yd ff4 fs4 fc0 sc0 ls0 ws0">Heap<span class="_ _d"> </span>Memory</div><div class="t m0 x6 h6 ye ff4 fs4 fc0 sc0 ls0 ws0">Stack<span class="_ _d"> </span>Memory</div><div class="t m0 x6 h6 yf ff6 fs4 fc0 sc0 ls0 ws0">constexpr<span class="_ _d"> </span><span class="ff4">vs.<span class="_ _9"> </span></span>static<span class="_"> </span>constexpr</div><div class="t m0 x6 h6 y10 ff4 fs4 fc0 sc0 ls0 ws0">Cache<span class="_ _d"> </span>Utilization</div><div class="t m0 x6 h6 y11 ff4 fs4 fc0 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _c"> </span>Alignment</div><div class="t m0 x6 h6 y12 ff4 fs4 fc0 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _c"> </span>Prefetch</div><div class="t m0 x7 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">1/93</div><a class="l" href="#pf6" data-dest-detail='[6,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:47.076000px;bottom:197.121000px;width:102.826000px;height:16.145000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pfa" data-dest-detail='[10,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:181.140000px;width:33.374000px;height:10.123000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pfb" data-dest-detail='[11,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:163.397000px;width:91.130000px;height:11.821000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf10" data-dest-detail='[16,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:146.541000px;width:123.176000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf12" data-dest-detail='[18,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:47.076000px;bottom:118.845000px;width:151.843000px;height:14.745000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf13" data-dest-detail='[19,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:102.288000px;width:60.495000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf14" data-dest-detail='[20,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:84.878000px;width:62.294000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf15" data-dest-detail='[21,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:67.191000px;width:151.680000px;height:10.175000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf16" data-dest-detail='[22,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:51.996000px;width:73.281000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf1a" data-dest-detail='[26,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:32.649000px;width:81.694000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf1f" data-dest-detail='[31,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:15.239000px;width:73.917000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">T<span class="_ _7"></span>able<span class="_ _8"> </span>of<span class="_ _9"> </span>Contents</div><div class="t m0 x5 h8 y14 ff1 fs4 fc2 sc0 ls0 ws0">3<span class="_ _a"> </span><span class="fs2 fc0">Arithmetic<span class="_ _6"> </span>T<span class="_ _5"></span>yp<span class="_ _b"></span>es</span></div><div class="t m0 x6 h6 y15 ff4 fs4 fc0 sc0 ls0 ws0">Data<span class="_ _d"> </span>T<span class="_ _3"></span>ypes</div><div class="t m0 x6 h6 y16 ff4 fs4 fc0 sc0 ls0 ws0">Arithmetic<span class="_ _d"> </span>Op<span class="_ _b"></span>erations</div><div class="t m0 x6 h6 y17 ff4 fs4 fc0 sc0 ls0 ws0">Conversion</div><div class="t m0 x6 h6 y18 ff4 fs4 fc0 sc0 ls0 ws0">Floating-P<span class="_ _3"></span>oint</div><div class="t m0 x6 h6 y19 ff4 fs4 fc0 sc0 ls0 ws0">Compiler<span class="_ _d"> </span>Intrinsic<span class="_ _c"> </span>F<span class="_ _3"></span>unctions</div><div class="t m0 x6 h6 y1a ff4 fs4 fc0 sc0 ls0 ws0">V<span class="_ _3"></span>alue<span class="_ _c"> </span>in<span class="_ _d"> </span>a<span class="_ _c"> </span>Range</div><div class="t m0 x6 h6 y1b ff4 fs4 fc0 sc0 ls0 ws0">Lo<span class="_ _b"></span>okup<span class="_ _d"> </span>T<span class="_ _3"></span>able</div><div class="t m0 x7 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">2/93</div><a class="l" href="#pf21" data-dest-detail='[33,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:47.076000px;bottom:175.161000px;width:115.119000px;height:14.745000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf23" data-dest-detail='[35,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:158.604000px;width:49.895000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf24" data-dest-detail='[36,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:141.194000px;width:94.534000px;height:10.849000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf29" data-dest-detail='[41,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:125.722000px;width:47.239000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf2a" data-dest-detail='[42,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:106.375000px;width:61.436000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf2c" data-dest-detail='[44,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:88.965000px;width:118.750000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf32" data-dest-detail='[50,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:71.555000px;width:73.156000px;height:10.849000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf34" data-dest-detail='[52,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:54.146000px;width:58.807000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAJNklEQVR42u3Ysc3UQBCA0VvkESE1IKKtACHkwAESndEEvTgwAR04oQOiP2SSIyNzcJxgx/J76cqWdrTBp2nv3n+8AQBAGT++f3tlCgAAVCNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAD4o2WmKQAAUEdE2KQCAFCOSAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAPGM6+wX6vDzz+b6tHgEAQDU2qQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAOA5LTNNAQCAOiLCJhUAgHJEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAFzMdNmb93k5Otq31csAABjIJhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAACjtcw0BQAA6ogIm1QAAMoRqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUA4Nymy968z8vR0b6tXgYAwEA2qQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABitZaYpAABQR0TYpAIAUI5IBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAAAeMl325n1ejo72bfUyAAAGskkFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgDAaC0zTQEAgDoiwiYVAIByRCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBADi36bI37/NydLRvq5cBADCQTSoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABGa5lpCgAA1BERNqkAAJQjUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQCAh0yXvXmfl6OjfVu9DACAgWxSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAMFrLTFMAAKCOiLBJBQCgHJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAADxkuuzN+7wcHe3b6mUAAAxkkwoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAIDRWmaaAgAAdUSETSoAAOWIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAcG7TZW/e5+XoaN9WLwMAYCCbVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIzWMtMUAACoIyJsUgEAKEekAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAPmS578z4vR0f7tnoZAAAD2aQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBgtJaZpgAAQB0RYZMKAEA5IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAJzbdNmb93k5Otq31csAABjIJhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAACjtcw0BQAA6ogIm1QAAMoRqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAD/0fTy5e2/+O/PT18NFwCAv9A/fG7tzev7y6/b7X6/GwgAACX8BkoKT/Ak+lFeAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">T<span class="_ _7"></span>able<span class="_ _8"> </span>of<span class="_ _9"> </span>Contents</div><div class="t m0 x5 h8 y1c ff1 fs4 fc2 sc0 ls0 ws0">4<span class="_ _a"> </span><span class="fs2 fc0">Control<span class="_ _6"> </span>Flo<span class="_ _3"></span>w</span></div><div class="t m0 x6 h6 y1d ff4 fs4 fc0 sc0 ls0 ws0">Branches</div><div class="t m0 x6 h6 y1e ff4 fs4 fc0 sc0 ls0 ws0">Branch<span class="_ _d"> </span>Hints<span class="_ _c"> </span>-<span class="_ _d"> </span><span class="ff5">[[likely]]<span class="_"> </span>/<span class="_"> </span>[[unlikely]]</span></div><div class="t m0 x6 h6 y1f ff4 fs4 fc0 sc0 ls0 ws0">Signed/Unsigned<span class="_ _d"> </span>Integers</div><div class="t m0 x6 h6 y20 ff4 fs4 fc0 sc0 ls0 ws0">Lo<span class="_ _b"></span>ops</div><div class="t m0 x6 h6 y21 ff4 fs4 fc0 sc0 ls0 ws0">Lo<span class="_ _b"></span>op<span class="_ _d"> </span>Hoisting</div><div class="t m0 x6 h6 y22 ff4 fs4 fc0 sc0 ls0 ws0">Lo<span class="_ _b"></span>op<span class="_ _d"> </span>Unrolling</div><div class="t m0 x6 h6 y23 ff4 fs4 fc0 sc0 ls0 ws0">Assertions</div><div class="t m0 x6 h6 y24 ff4 fs4 fc0 sc0 ls0 ws0">Compiler<span class="_ _d"> </span>Hints<span class="_ _c"> </span>-<span class="_ _d"> </span><span class="ff5">[[assume]]/std::unreachable()</span></div><div class="t m0 x6 h6 y25 ff4 fs4 fc0 sc0 ls0 ws0">Recursion</div><div class="t m0 x7 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">3/93</div><a class="l" href="#pf37" data-dest-detail='[55,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:47.076000px;bottom:195.335000px;width:86.536000px;height:13.782000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf39" data-dest-detail='[57,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:177.958000px;width:39.795000px;height:8.912000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf3c" data-dest-detail='[60,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:156.598000px;width:197.592000px;height:11.069000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf3d" data-dest-detail='[61,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:137.062000px;width:108.385000px;height:11.821000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf3e" data-dest-detail='[62,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:118.413000px;width:26.594000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf3f" data-dest-detail='[63,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:99.210000px;width:60.439000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf40" data-dest-detail='[64,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:80.007000px;width:63.747000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf42" data-dest-detail='[66,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:62.741000px;width:44.029000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf43" data-dest-detail='[67,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:41.601000px;width:225.958000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf44" data-dest-detail='[68,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:24.335000px;width:42.161000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">T<span class="_ _7"></span>able<span class="_ _8"> </span>of<span class="_ _9"> </span>Contents</div><div class="t m0 x5 h8 y26 ff1 fs4 fc2 sc0 ls0 ws0">5<span class="_ _a"> </span><span class="fs2 fc0">F<span class="_ _3"></span>unctions</span></div><div class="t m0 x6 h6 y27 ff4 fs4 fc0 sc0 ls0 ws0">F<span class="_ _3"></span>unction<span class="_ _c"> </span>Call<span class="_ _d"> </span>Cost</div><div class="t m0 x6 h6 y28 ff4 fs4 fc0 sc0 ls0 ws0">Argument<span class="_ _d"> </span>Passing</div><div class="t m0 x6 h6 y29 ff4 fs4 fc0 sc0 ls0 ws0">F<span class="_ _3"></span>unction<span class="_ _c"> </span>Inlining</div><div class="t m0 x6 h6 y2a ff4 fs4 fc0 sc0 ls0 ws0">Pure<span class="_ _d"> </span>Functions</div><div class="t m0 x6 h6 y2b ff4 fs4 fc0 sc0 ls0 ws0">Constant<span class="_ _d"> </span>Functions</div><div class="t m0 x6 h6 y2c ff4 fs4 fc0 sc0 ls0 ws0">P<span class="_ _3"></span>ointers<span class="_ _c"> </span>Aliasing</div><div class="t m0 x5 h8 y2d ff1 fs4 fc2 sc0 ls0 ws0">6<span class="_ _a"> </span><span class="fs2 fc0">Object-Oriented<span class="_ _6"> </span>Programming</span></div><div class="t m0 x5 h8 y2e ff1 fs4 fc2 sc0 ls0 ws0">7<span class="_ _a"> </span><span class="ff5 fs2 fc0">Std<span class="_ _6"> </span><span class="ff1">Lib<span class="_ _3"></span>ra<span class="_ _3"></span>ry<span class="_ _e"> </span>and<span class="_ _e"> </span>Other<span class="_ _e"> </span>Language<span class="_ _6"> </span>Asp<span class="_ _b"></span>ects</span></span></div><div class="t m0 x7 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">4/93</div><a class="l" href="#pf46" data-dest-detail='[70,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:47.076000px;bottom:200.316000px;width:64.888000px;height:13.782000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf47" data-dest-detail='[71,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:182.940000px;width:79.535000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf48" data-dest-detail='[72,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:161.800000px;width:77.598000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf4c" data-dest-detail='[76,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:142.597000px;width:71.870000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf51" data-dest-detail='[81,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:125.331000px;width:64.702000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf53" data-dest-detail='[83,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:106.128000px;width:82.800000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf54" data-dest-detail='[84,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:84.988000px;width:71.676000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf58" data-dest-detail='[88,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:47.076000px;bottom:55.299000px;width:201.724000px;height:14.745000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf5f" data-dest-detail='[95,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:47.076000px;bottom:25.611000px;width:270.846000px;height:14.744000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf6" class="pf w0 h0" data-page-no="6"><div class="pc pc6 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x8 h2 y2f ff1 fs0 fc0 sc0 ls0 ws0">I/O<span class="_ _1"> </span>Op<span class="_ _0"></span>erations</div><a class="l" href="#pf6" data-dest-detail='[6,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:130.534000px;width:176.211000px;height:26.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf7" class="pf w0 h0" data-page-no="7"><div class="pc pc7 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIX0lEQVR42u3YsQ2DMBRFUTvCoswMEVUmiCLqSGzGEhmHgiGyQSrKuDEdM3yFcyaw3m+unIfHmAAAIIzPulysAABANCIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAIBDrrVaAQCAOEopflIBAAhHpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFJNAACASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApJoAAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUA4H9023yL9qbv6+0wAACndX9OOV/7tv1Saq0ZBACAEHYZ4BQENexxkgAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">I/O<span class="_ _9"> </span>Operations</div><div class="t m0 x9 h8 y30 ff1 fs2 fc3 sc0 ls0 ws0">I/O<span class="_ _e"> </span>Op<span class="_ _0"></span>erations<span class="_ _e"> </span>a<span class="_ _3"></span>re<span class="_ _e"> </span>o<span class="_ _3"></span>rders<span class="_ _e"> </span>of<span class="_ _e"> </span>magnitude<span class="_ _6"> </span>slo<span class="_ _3"></span>w<span class="_ _3"></span>er<span class="_ _e"> </span>than</div><div class="t m0 xa h8 y31 ff1 fs2 fc3 sc0 ls0 ws0">memo<span class="_ _3"></span>ry<span class="_ _e"> </span>accesses</div><div class="t m0 x7 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">5/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf8" class="pf w0 h0" data-page-no="8"><div class="pc pc8 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">I/O<span class="_ _9"> </span>Streams</div><div class="t m0 x1 hb y32 ff4 fs6 fc0 sc0 ls0 ws0">In<span class="_ _c"> </span>general,<span class="_ _c"> </span>input/output<span class="_ _8"> </span>operations<span class="_ _f"> </span>a<span class="_ _3"></span>re<span class="_ _f"> </span>one<span class="_ _c"> </span>of<span class="_ _f"> </span>the<span class="_ _c"> </span>most<span class="_ _f"> </span>exp<span class="_ _b"></span>ensive</div><div class="t m0 xb hb y33 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Use<span class="_ _10"> </span><span class="ff6">endl<span class="_ _10"> </span></span>fo<span class="_ _3"></span>r<span class="_ _10"> </span><span class="ff6">ostream<span class="_ _10"> </span></span>only<span class="_ _c"> </span>when<span class="_ _f"> </span>it<span class="_ _c"> </span>is<span class="_ _f"> </span>strictly<span class="_ _c"> </span>necessary<span class="_ _c"> </span>(p<span class="_ _3"></span>refer<span class="_ _10"> </span><span class="ff6">\n<span class="_ _d"> </span></span>)</span></div><div class="t m0 xb hb y34 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Disable<span class="_ _c"> </span><span class="ff9">synchronization<span class="_ _f"> </span></span>with<span class="_ _10"> </span><span class="ff6">printf/scanf<span class="_ _d"> </span></span>:</span></div><div class="t m0 xc hc y35 ff6 fs4 fc0 sc0 ls0 ws0">std::ios_base::sync_with_stdio(false)</div><div class="t m0 xb hb y36 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Disable<span class="_ _c"> </span>IO<span class="_ _f"> </span><span class="ff9">flushing<span class="_ _9"> </span></span>when<span class="_ _f"> </span>mixing<span class="_ _10"> </span><span class="ff6">istream/ostream<span class="_ _10"> </span></span>calls:</span></div><div class="t m0 xc hc y37 ff6 fs4 fc0 sc0 ls0 ws0">&lt;istream_obj&gt;.tie(nullptr);</div><div class="t m0 xb hb y38 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Increase<span class="_ _c"> </span>IO<span class="_ _f"> </span><span class="ff9">buffer<span class="_ _c"> </span>size<span class="_ _0"></span></span>:</span></div><div class="t m0 xc hc y39 ff6 fs4 fc0 sc0 ls0 ws0">file.rdbuf()-&gt;pubsetbuf(buffer_var,<span class="_"> </span>buffer_size);</div><div class="t m0 x7 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">6/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf9" class="pf w0 h0" data-page-no="9"><div class="pc pc9 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIeElEQVR42u3YsQkCMRiG4UQuWAVnECsnELEW3MwlHMfCIdzA6rjKNLGzFSzkP3meCZIvzUvyZndIAAAQxv12XVgBAIBoRCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAAG+5tWYFAADiKKX4SQUAIByRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAA/NszorNM0eTAAgO/UWmd0Wj+pAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVBMAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpJgAAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAAIsmtNSsAABBHKcVPKgAA4YhUAABEKgAAfDKM5/XfXOZxvHhRAIC52+5POa+WfXym1Hs3CAAAIbwAvAAaAmeK6wsAAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">I/O<span class="_ _9"> </span>Streams<span class="_ _8"> </span>-<span class="_ _9"> </span>Example</div><div class="t m0 x1 hd y3a ffa fs7 fc4 sc0 ls0 ws0">#<span class="_ _11"> </span>include<span class="_ _12"> </span><span class="fc5">&lt;iostream&gt;</span></div><div class="t m0 x1 hd y3b ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffb fc7">main<span class="fc0">()<span class="_ _9"> </span>{</span></span></div><div class="t m0 xd hd y3c ffb fs7 fc0 sc0 ls0 ws0">std<span class="fc8">::</span>ifstream<span class="_ _9"> </span>fin;</div><div class="t m0 xd hd y3d ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>--------------------------------------------------------</div><div class="t m0 xd hd y3e ffb fs7 fc0 sc0 ls0 ws0">std<span class="fc8">::</span>ios_base<span class="fc8">::</span>sync_with_stdio(<span class="fc9">false</span>);<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _9"> </span>sync<span class="_ _e"> </span>disable</span></div><div class="t m0 xd hd y3f ffb fs7 fc0 sc0 ls0 ws0">fin.tie(<span class="ff5 fc9">nullptr</span>);<span class="_ _13"> </span><span class="ffa fc5">//<span class="_ _9"> </span>flush<span class="_ _9"> </span>disable</span></div><div class="t m0 xe hd y40 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>buffer<span class="_ _9"> </span>increase</div><div class="t m0 xd hd y41 ff5 fs7 fc9 sc0 ls0 ws0">const<span class="_"> </span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">BUFFER_SIZE<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>1024<span class="_ _e"> </span>*<span class="_ _9"> </span>1024</span>;<span class="_ _14"> </span><span class="ffa fc5">//<span class="_ _9"> </span>1<span class="_ _9"> </span>MB</span></span></span></div><div class="t m0 xd hd y42 ff5 fs7 fc6 sc0 ls0 ws0">char<span class="_"> </span><span class="ffb fc0">buffer[BUFFER_SIZE];</span></div><div class="t m0 xd hd y43 ffb fs7 fc0 sc0 ls0 ws0">fin.rdbuf()<span class="fc8">-&gt;</span>pubsetbuf(buffer,<span class="_ _9"> </span>BUFFER_SIZE);</div><div class="t m0 xd hd y44 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>--------------------------------------------------------</div><div class="t m0 xd hd y45 ffb fs7 fc0 sc0 ls0 ws0">fin.open(filename);<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _9"> </span>Note:<span class="_ _e"> </span>open()<span class="_ _9"> </span>after<span class="_ _9"> </span>optimizations</span></div><div class="t m0 xd hd y46 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>IO<span class="_ _9"> </span>operations</div><div class="t m0 xd hd y47 ffb fs7 fc0 sc0 ls0 ws0">fin.close();</div><div class="t m0 x1 hd y48 ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x7 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">7/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pfa" class="pf w0 h0" data-page-no="a"><div class="pc pca w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 he y7 ff5 fs3 fc1 sc0 ls0 ws0">printf</div><div class="t m0 xb hb y49 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _15"> </span><span class="ff6">printf<span class="_ _10"> </span><span class="ff4">is<span class="_ _c"> </span>faster<span class="_ _c"> </span>than<span class="_ _10"> </span></span>ostream<span class="_ _10"> </span><span class="ff4">(see<span class="_ _f"> </span></span>speed<span class="_"> </span>test<span class="_"> </span>link<span class="ff4">)</span></span></div><div class="t m0 xb hb y4a ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">A<span class="_ _10"> </span><span class="ff6">printf<span class="_ _10"> </span></span>call<span class="_ _c"> </span>with<span class="_ _c"> </span>a<span class="_ _f"> </span>simple<span class="_ _c"> </span>format<span class="_ _c"> </span>string<span class="_ _c"> </span>ending<span class="_ _f"> </span>with<span class="_ _10"> </span><span class="ff6">\n<span class="_ _10"> </span></span>is<span class="_ _c"> </span>converted<span class="_ _c"> </span>to<span class="_ _f"> </span>a</span></div><div class="t m0 xc hb y4b ff6 fs6 fc0 sc0 ls0 ws0">puts()<span class="_ _10"> </span><span class="ff4">call</span></div><div class="t m0 x6 hd y4c ffb fs7 fc0 sc0 ls0 ws0">printf(<span class="fca">&quot;Hello<span class="_ _9"> </span>World<span class="ff5 fcb">\n</span>&quot;</span>);</div><div class="t m0 x6 hd y4d ffb fs7 fc0 sc0 ls0 ws0">printf(<span class="fca">&quot;%s<span class="ff5 fcb">\n</span>&quot;</span>,<span class="_ _9"> </span>string);</div><div class="t m0 xb hb y4e ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">No<span class="_ _c"> </span>optimization<span class="_ _f"> </span>if<span class="_ _c"> </span>the<span class="_ _f"> </span>string<span class="_ _c"> </span>is<span class="_ _f"> </span>not<span class="_ _c"> </span>ending<span class="_ _c"> </span>with<span class="_ _10"> </span><span class="ff6">\n<span class="_ _10"> </span></span>or<span class="_ _c"> </span>one<span class="_ _c"> </span>or<span class="_ _c"> </span>mo<span class="_ _3"></span>re<span class="_ _10"> </span><span class="ff6">%<span class="_ _10"> </span></span>a<span class="_ _3"></span>re</span></div><div class="t m0 x6 hb y4f ff4 fs6 fc0 sc0 ls0 ws0">detected<span class="_ _c"> </span>in<span class="_ _c"> </span>the<span class="_ _f"> </span>format<span class="_ _c"> </span>string</div><div class="t m0 xb hd y50 ffb fs7 fcc sc0 ls0 ws0">www.ciselant.de/projects/gcc_printf/gcc_printf.html</div><div class="t m0 x7 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">8/93</div><a class="l" href="https://github.com/fmtlib/fmt#speed-tests"><div class="d m1" style="border-style:none;position:absolute;left:228.032000px;bottom:180.341000px;width:87.902000px;height:16.930000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="http://www.ciselant.de/projects/gcc_printf/gcc_printf.html"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:-0.714000px;width:242.067000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pfb" class="pf w0 h0" data-page-no="b"><div class="pc pcb w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIXklEQVR42u3YsQ3CMBRF0W+ElZIZEFUmQIg6UjZjCcahYAg2SOUSN6Zjhq/onBFedfXK5XoPAABI4/N+HawAAEA2IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAgL/Se7cCAAB51Fo9qQAApCNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqSYAAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSTQAAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgCwH8f2OFshIrblaQQAgAzm21rKaRrtGzHGMAgAACn8AEeVFASH5D/TAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _9"> </span>Mapp<span class="_ _b"></span>ed<span class="_ _9"> </span>I/O</div><div class="t m0 x1 hb y51 ff4 fs6 fc0 sc0 ls0 ws0">A<span class="_ _c"> </span><span class="ff1">memory-mapped<span class="_ _8"> </span>file<span class="_ _c"> </span></span>is<span class="_ _f"> </span>a<span class="_ _c"> </span>segment<span class="_ _f"> </span>of<span class="_ _c"> </span>virtual<span class="_ _f"> </span>memo<span class="_ _3"></span>ry<span class="_ _f"> </span>that<span class="_ _c"> </span>has<span class="_ _f"> </span>b<span class="_ _b"></span>een<span class="_ _c"> </span>assigned<span class="_ _f"> </span>a</div><div class="t m0 x1 hb y52 ff4 fs6 fc0 sc0 ls0 ws0">direct<span class="_ _c"> </span>byte-fo<span class="_ _3"></span>r-b<span class="_ _3"></span>yte<span class="_ _f"> </span>co<span class="_ _3"></span>rrelation<span class="_ _f"> </span>with<span class="_ _c"> </span>some<span class="_ _f"> </span>p<span class="_ _b"></span>ortion<span class="_ _c"> </span>of<span class="_ _c"> </span>a<span class="_ _c"> </span>file</div><div class="t m0 x1 hb y53 ff1 fs6 fc0 sc0 ls0 ws0">Benefits:</div><div class="t m0 xb hb y54 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Orders<span class="_ _c"> </span>of<span class="_ _f"> </span>magnitude<span class="_ _c"> </span>faster<span class="_ _f"> </span>than<span class="_ _c"> </span>system<span class="_ _f"> </span>calls</span></div><div class="t m0 xb hb y55 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Input<span class="_ _c"> </span>can<span class="_ _f"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>“cached”<span class="_ _f"> </span>in<span class="_ _c"> </span>RAM<span class="_ _f"> </span>memo<span class="_ _3"></span>ry<span class="_ _f"> </span>(page/file<span class="_ _c"> </span>cache)</span></div><div class="t m0 xb hb y56 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">A<span class="_ _c"> </span>file<span class="_ _f"> </span>requires<span class="_ _c"> </span>disk<span class="_ _f"> </span>access<span class="_ _c"> </span>only<span class="_ _f"> </span>when<span class="_ _c"> </span>a<span class="_ _c"> </span>new<span class="_ _f"> </span>page<span class="_ _c"> </span>b<span class="_ _0"></span>ounda<span class="_ _3"></span>ry<span class="_ _c"> </span>is<span class="_ _c"> </span>crossed</span></div><div class="t m0 xb hb y57 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Memo<span class="_ _3"></span>ry-mapping<span class="_ _f"> </span>may<span class="_ _c"> </span>b<span class="_ _3"></span>ypass<span class="_ _c"> </span>the<span class="_ _f"> </span>page/sw<span class="_ _3"></span>ap<span class="_ _f"> </span>file<span class="_ _c"> </span>completely</span></div><div class="t m0 xb hb y58 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Load<span class="_ _c"> </span>and<span class="_ _f"> </span>sto<span class="_ _3"></span>re<span class="_ _f"> </span><span class="ff9">raw<span class="_ _9"> </span></span>data<span class="_ _c"> </span>(no<span class="_ _c"> </span>parsing/conversion)</span></div><div class="t m0 x7 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">9/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pfc" class="pf w0 h0" data-page-no="c"><div class="pc pcc w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIeElEQVR42u3YsQkCMRiG4UQuWB3OIFZOIGItuJlLOI6FQ7iB1XGVaWJnK1jof8fzTBC+NC9/3uwOCQAAwrjfrgsrAAAQjUgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAOAt11qtAABAHKUUl1QAAMIRqQAAiFQAABCpAACIVAAAEKkAAMxON6G3juPowwAAvtP3/YRe65IKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBINQEAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJFqAgAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAwB/lWqsVAACIo5TikgoAQDgiFQAAkQoAACIVAACRCgAAIhUAgNnphvPaCh89jhcjAAD8xnZ/ynm1bMMzpdaaQQAACOEFqsEaAhxt2FcAAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _9"> </span>Mapp<span class="_ _b"></span>ed<span class="_ _9"> </span>I/O<span class="_ _8"> </span>-<span class="_ _9"> </span>Example<span class="_ _16"> </span>1/2</div><div class="t m0 x1 hf y59 ffa fs5 fc4 sc0 ls0 ws0">#<span class="_ _11"> </span>if<span class="_ _f"> </span>!defined(__linux__)</div><div class="t m0 xf hf y5a ffa fs5 fc4 sc0 ls0 ws0">#<span class="_ _11"> </span>error<span class="_ _f"> </span>It<span class="_ _9"> </span>works<span class="_ _8"> </span>only<span class="_ _8"> </span>on<span class="_ _8"> </span>linux</div><div class="t m0 x1 hf y5b ffa fs5 fc4 sc0 ls0 ws0">#<span class="_ _11"> </span>endif</div><div class="t m0 x1 hf y5c ffa fs5 fc4 sc0 ls0 ws0">#<span class="_ _11"> </span>include<span class="_ _6"> </span><span class="fc5">&lt;fcntl.h&gt;<span class="_ _17"> </span>//::open</span></div><div class="t m0 x1 hf y5d ffa fs5 fc4 sc0 ls0 ws0">#<span class="_ _11"> </span>include<span class="_ _6"> </span><span class="fc5">&lt;sys/mman.h&gt;<span class="_ _18"> </span>//::mmap</span></div><div class="t m0 x1 hf y5e ffa fs5 fc4 sc0 ls0 ws0">#<span class="_ _11"> </span>include<span class="_ _6"> </span><span class="fc5">&lt;sys/stat.h&gt;<span class="_ _18"> </span>//::open</span></div><div class="t m0 x1 hf y5f ffa fs5 fc4 sc0 ls0 ws0">#<span class="_ _11"> </span>include<span class="_ _6"> </span><span class="fc5">&lt;sys/types.h&gt;<span class="_ _19"> </span>//::open</span></div><div class="t m0 x1 hf y60 ffa fs5 fc4 sc0 ls0 ws0">#<span class="_ _11"> </span>include<span class="_ _6"> </span><span class="fc5">&lt;unistd.h&gt;<span class="_ _1a"> </span>//::lseek</span></div><div class="t m0 x1 hf y61 ffa fs5 fc5 sc0 ls0 ws0">//<span class="_ _8"> </span>usage:<span class="_ _1b"> </span>./exec<span class="_ _8"> </span>&lt;file&gt;<span class="_ _1b"> </span>&lt;byte_size&gt;<span class="_ _8"> </span>&lt;mode&gt;</div><div class="t m0 x1 hf y62 ff5 fs5 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffc fc7">main<span class="fc0">(</span></span>int<span class="_"> </span><span class="ffc fc0">argc,<span class="_ _1b"> </span></span>char<span class="ffc fc8">*<span class="_ _8"> </span><span class="fc0">argv[])<span class="_ _1b"> </span>{</span></span></div><div class="t m0 x10 hf y63 ff5 fs5 fc6 sc0 ls0 ws0">size_t<span class="_"> </span><span class="ffc fc0">file_size<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>std<span class="fc8">::</span>stoll(argv[<span class="fc8">2</span>]);</span></div><div class="t m0 x10 hf y64 ff5 fs5 fc9 sc0 ls0 ws0">auto<span class="_ _1c"> </span><span class="ffc fc0">is_read<span class="_ _1c"> </span><span class="fc8">=<span class="_ _8"> </span></span>std<span class="fc8">::</span>string(argv[<span class="fc8">3</span>])<span class="_ _1b"> </span><span class="fc8">==<span class="_ _1b"> </span><span class="fca">&quot;READ&quot;</span></span>;</span></div><div class="t m0 x10 hf y65 ff5 fs5 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffc fc0">fd<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>is_read<span class="_ _1b"> </span><span class="fc8">?<span class="_ _8"> </span>::</span>open(argv[<span class="fc8">1</span>],<span class="_ _1b"> </span>O_RDONLY)<span class="_ _1b"> </span><span class="fc8">:</span></span></div><div class="t m0 x11 hf y66 ffc fs5 fc8 sc0 ls0 ws0">::<span class="fc0">open(argv[</span>1<span class="fc0">],<span class="_ _8"> </span>O_RDWR<span class="_ _1b"> </span></span>|<span class="_ _1b"> </span><span class="fc0">O_CREAT<span class="_ _8"> </span></span>|<span class="_ _1b"> </span><span class="fc0">O_TRUNC,<span class="_ _1b"> </span>S_IRUSR<span class="_ _8"> </span></span>|<span class="_ _1b"> </span><span class="fc0">S_IWUSR);</span></div><div class="t m0 x10 hf y67 ff5 fs5 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffc fc0">(fd<span class="_ _8"> </span><span class="fc8">==<span class="_ _1b"> </span>-1</span>)</span></div><div class="t m0 x12 hf y68 ffc fs5 fc0 sc0 ls0 ws0">ERROR(<span class="fca">&quot;::open&quot;</span>)<span class="_ _1d"> </span><span class="ffa fc5">//<span class="_ _8"> </span>try<span class="_ _1b"> </span>to<span class="_ _8"> </span>get<span class="_ _1b"> </span>the<span class="_ _8"> </span>last<span class="_ _1b"> </span>byte</span></div><div class="t m0 x10 hf y69 ff5 fs5 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffc fc0">(<span class="fc8">::</span>lseek(fd,<span class="_ _8"> </span></span>static_cast<span class="ffc fc8">&lt;</span><span class="fc6">off_t<span class="ffc fc8">&gt;<span class="fc0">(file_size<span class="_ _1b"> </span></span>-<span class="_ _1b"> </span>1<span class="fc0">),<span class="_ _8"> </span>SEEK_SET)<span class="_ _1b"> </span></span>==<span class="_ _1b"> </span>-1<span class="fc0">)</span></span></span></div><div class="t m0 x12 hf y6a ffc fs5 fc0 sc0 ls0 ws0">ERROR(<span class="fca">&quot;::lseek&quot;</span>)</div><div class="t m0 x10 hf y6b ff5 fs5 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffc fc0">(<span class="fc8">!</span>is_read<span class="_ _8"> </span><span class="fc8">&amp;&amp;<span class="_ _1b"> </span>::</span>write(fd,<span class="_ _1b"> </span><span class="fca">&quot;&quot;</span>,<span class="_ _8"> </span><span class="fc8">1</span>)<span class="_ _1b"> </span><span class="fc8">!=<span class="_ _1b"> </span>1</span>)<span class="_ _8"> </span><span class="ffa fc5">//<span class="_ _1b"> </span>try<span class="_ _8"> </span>to<span class="_ _1b"> </span>write</span></span></div><div class="t m0 x12 hf y6c ffc fs5 fc0 sc0 ls0 ws0">ERROR(<span class="fca">&quot;::write&quot;</span>)</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">10/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pfd" class="pf w0 h0" data-page-no="d"><div class="pc pcd w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIeElEQVR42u3YsQkCMRiG4UQuWB3OIFZOIGItuJlLOI6FQ7iB1XGVaWLnACr43/E8E4QvzcufN7tDAgCAMO6368IKAABEI1IBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAHjLtVYrAAAQRynFJRUAgHBEKgAAIhUAAEQqAAAiFQAARCoAALPTTeit4zj6MACAz/R9P6HXuqQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSTQAAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKSaAAAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAA8Ee51moFAADiKKW4pAIAEI5IBQBApAIAgEgFAECkAgCASAUAYHa64by2wjcex4sRAAB+aLs/5bxatuGZUmvNIAAAhPACej0aAhxLAl0AAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _1b"> </span>Mapp<span class="_ _0"></span>ed<span class="_ _8"> </span>I/O<span class="_ _1b"> </span>Example<span class="_ _1e"> </span>2/2</div><div class="t m0 x1 hf y59 ff5 fs5 fc9 sc0 ls0 ws0">auto<span class="_"> </span><span class="ffc fc0">mm_mode<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>(is_read)<span class="_ _1b"> </span><span class="fc8">?<span class="_ _8"> </span></span>PROT_READ<span class="_ _1b"> </span><span class="fc8">:<span class="_ _1b"> </span></span>PROT_WRITE;</span></div><div class="t m0 x1 hf y5b ffa fs5 fc5 sc0 ls0 ws0">//<span class="_ _8"> </span>Open<span class="_ _1b"> </span>Memory<span class="_ _8"> </span>Mapped<span class="_ _1b"> </span>file</div><div class="t m0 x1 hf y5c ff5 fs5 fc9 sc0 ls0 ws0">auto<span class="_"> </span><span class="ffc fc0">mmap_ptr<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span></span>static_cast<span class="ffc fc8">&lt;</span><span class="fc6">char<span class="ffc fc8">*&gt;<span class="fc0">(</span></span></span></div><div class="t m0 x14 hf y5d ffc fs5 fc8 sc0 ls0 ws0">::<span class="fc0">mmap(<span class="ff5 fc9">nullptr</span>,<span class="_ _8"> </span>file_size,<span class="_ _1b"> </span>mm_mode,<span class="_ _1b"> </span>MAP_SHARED,<span class="_ _8"> </span>fd,<span class="_ _1b"> </span></span>0<span class="fc0">)<span class="_ _1b"> </span>);</span></div><div class="t m0 x1 hf y5f ff5 fs5 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffc fc0">(mmap_ptr<span class="_ _8"> </span><span class="fc8">==<span class="_ _1b"> </span></span>MAP_FAILED)</span></div><div class="t m0 xf hf y60 ffc fs5 fc0 sc0 ls0 ws0">ERROR(<span class="fca">&quot;::mmap&quot;</span>);</div><div class="t m0 x1 hf y61 ffa fs5 fc5 sc0 ls0 ws0">//<span class="_ _8"> </span>Advise<span class="_ _1b"> </span>sequential<span class="_ _8"> </span>access</div><div class="t m0 x1 hf y62 ff5 fs5 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffc fc0">(<span class="fc8">::</span>madvise(mmap_ptr,<span class="_ _8"> </span>file_size,<span class="_ _1b"> </span>MADV_SEQUENTIAL)<span class="_ _1b"> </span><span class="fc8">==<span class="_ _8"> </span>-1</span>)</span></div><div class="t m0 xf hf y63 ffc fs5 fc0 sc0 ls0 ws0">ERROR(<span class="fca">&quot;::madvise&quot;</span>);</div><div class="t m0 x1 hf y65 ffa fs5 fc5 sc0 ls0 ws0">//<span class="_ _8"> </span>MemoryMapped<span class="_ _1b"> </span>Operations</div><div class="t m0 x1 hf y66 ffa fs5 fc5 sc0 ls0 ws0">//<span class="_ _8"> </span>read<span class="_ _1b"> </span>from/write<span class="_ _8"> </span>to<span class="_ _1b"> </span>&quot;mmap_ptr&quot;<span class="_ _8"> </span>as<span class="_ _1b"> </span>a<span class="_ _8"> </span>normal<span class="_ _1b"> </span>array:<span class="_ _8"> </span>mmap_ptr[i]</div><div class="t m0 x1 hf y68 ffa fs5 fc5 sc0 ls0 ws0">//<span class="_ _8"> </span>Close<span class="_ _1b"> </span>Memory<span class="_ _8"> </span>Mapped<span class="_ _1b"> </span>file</div><div class="t m0 x1 hf y69 ff5 fs5 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffc fc0">(<span class="fc8">::</span>munmap(mmap_ptr,<span class="_ _8"> </span>file_size)<span class="_ _1b"> </span><span class="fc8">==<span class="_ _1b"> </span>-1</span>)</span></div><div class="t m0 xf hf y6a ffc fs5 fc0 sc0 ls0 ws0">ERROR(<span class="fca">&quot;::munmap&quot;</span>);</div><div class="t m0 x1 hf y6b ff5 fs5 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffc fc0">(<span class="fc8">::</span>close(fd)<span class="_ _8"> </span><span class="fc8">==<span class="_ _1b"> </span>-1</span>)</span></div><div class="t m0 xf hf y6c ffc fs5 fc0 sc0 ls0 ws0">ERROR(<span class="fca">&quot;::close&quot;</span>);</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">11/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pfe" class="pf w0 h0" data-page-no="e"><div class="pc pce w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIdklEQVR42u3YsQkCMRiG4YtcsArOIFZOIGItuJlLOI6FQ7iB1XGVaWJnH0H4D55ngvClefnT7nAaAAAgjOfjvrICAADRiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAL5SrdUKAADEkXN2SQUAIByRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAA0GFc0FvnefZhAAC/KaUs6LUuqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQTAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBAFi8VGu1AgAAceScXVIBAAhHpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAECncbpurfA/r/PNCAAAXfbHS0qbdZvew9BaMwgAACF8AP+0GgIOKe+EAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Lo<span class="_ _3"></span>w-Level<span class="_ _1b"> </span>Pa<span class="_ _3"></span>rsing<span class="_ _1f"> </span>1/2</div><div class="t m0 x1 hb y6d ff4 fs6 fc0 sc0 ls0 ws0">Consider<span class="_ _c"> </span>using<span class="_ _c"> </span>optimized<span class="_ _f"> </span>(low-level)<span class="_ _c"> </span>numeric<span class="_ _c"> </span>conversion<span class="_ _c"> </span>routines:</div><div class="t m0 x1 hf y6e ff5 fs5 fc9 sc0 ls0 ws0">template<span class="ffc fc8">&lt;</span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">N,<span class="_ _8"> </span></span>unsigned<span class="_ _1b"> </span><span class="ffc fc0">MUL,<span class="_ _1b"> </span></span>int<span class="_"> </span><span class="ffc fc0">INDEX<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span>0&gt;</span></span></span></div><div class="t m0 x1 hf y6f ff5 fs5 fc9 sc0 ls0 ws0">struct<span class="_"> </span><span class="fc7">fastStringToIntStr<span class="ffc fc0">;</span></span></div><div class="t m0 x1 hf y70 ff5 fs5 fc9 sc0 ls0 ws0">inline<span class="_"> </span><span class="fc6">unsigned<span class="_"> </span><span class="ffc fc7">fastStringToUnsigned<span class="fc0">(</span></span></span>const<span class="_"> </span><span class="fc6">char<span class="ffc fc8">*<span class="_ _1b"> </span><span class="fc0">str,<span class="_ _8"> </span></span></span>int<span class="_ _1b"> </span><span class="ffc fc0">length)<span class="_ _1b"> </span>{</span></span></div><div class="t m0 xf hf y71 ff5 fs5 fc9 sc0 ls0 ws0">switch<span class="ffc fc0">(length)<span class="_ _8"> </span>{</span></div><div class="t m0 x15 hf y72 ff5 fs5 fc9 sc0 ls0 ws0">case<span class="_"> </span><span class="ffc fc8">10<span class="fc0">:<span class="_ _8"> </span></span></span>return<span class="_ _1b"> </span><span class="ffc fc0">fastStringToIntStr<span class="fc8">&lt;10</span>,<span class="_ _1b"> </span><span class="fc8">1000000000&gt;::</span>aux(str);</span></div><div class="t m0 x15 hf y73 ff5 fs5 fc9 sc0 ls0 ws0">case<span class="_ _15"> </span><span class="ffc fc8">9<span class="fc0">:<span class="_ _8"> </span></span></span>return<span class="_ _1b"> </span><span class="ffc fc0">fastStringToIntStr<span class="fc8">&lt;<span class="_ _1b"> </span>9</span>,<span class="_ _8"> </span><span class="fc8">100000000&gt;::</span>aux(str);</span></div><div class="t m0 x15 hf y74 ff5 fs5 fc9 sc0 ls0 ws0">case<span class="_ _15"> </span><span class="ffc fc8">8<span class="fc0">:<span class="_ _8"> </span></span></span>return<span class="_ _1b"> </span><span class="ffc fc0">fastStringToIntStr<span class="fc8">&lt;<span class="_ _1b"> </span>8</span>,<span class="_ _8"> </span><span class="fc8">10000000&gt;::</span>aux(str);</span></div><div class="t m0 x15 hf y75 ff5 fs5 fc9 sc0 ls0 ws0">case<span class="_ _15"> </span><span class="ffc fc8">7<span class="fc0">:<span class="_ _8"> </span></span></span>return<span class="_ _1b"> </span><span class="ffc fc0">fastStringToIntStr<span class="fc8">&lt;<span class="_ _1b"> </span>7</span>,<span class="_ _8"> </span><span class="fc8">1000000&gt;::</span>aux(str);</span></div><div class="t m0 x15 hf y76 ff5 fs5 fc9 sc0 ls0 ws0">case<span class="_ _15"> </span><span class="ffc fc8">6<span class="fc0">:<span class="_ _8"> </span></span></span>return<span class="_ _1b"> </span><span class="ffc fc0">fastStringToIntStr<span class="fc8">&lt;<span class="_ _1b"> </span>6</span>,<span class="_ _8"> </span><span class="fc8">100000&gt;::</span>aux(str);</span></div><div class="t m0 x15 hf y77 ff5 fs5 fc9 sc0 ls0 ws0">case<span class="_ _15"> </span><span class="ffc fc8">5<span class="fc0">:<span class="_ _8"> </span></span></span>return<span class="_ _1b"> </span><span class="ffc fc0">fastStringToIntStr<span class="fc8">&lt;<span class="_ _1b"> </span>5</span>,<span class="_ _8"> </span><span class="fc8">10000&gt;::</span>aux(str);</span></div><div class="t m0 x15 hf y78 ff5 fs5 fc9 sc0 ls0 ws0">case<span class="_ _15"> </span><span class="ffc fc8">4<span class="fc0">:<span class="_ _8"> </span></span></span>return<span class="_ _1b"> </span><span class="ffc fc0">fastStringToIntStr<span class="fc8">&lt;<span class="_ _1b"> </span>4</span>,<span class="_ _8"> </span><span class="fc8">1000&gt;::</span>aux(str);</span></div><div class="t m0 x15 hf y79 ff5 fs5 fc9 sc0 ls0 ws0">case<span class="_ _15"> </span><span class="ffc fc8">3<span class="fc0">:<span class="_ _8"> </span></span></span>return<span class="_ _1b"> </span><span class="ffc fc0">fastStringToIntStr<span class="fc8">&lt;<span class="_ _1b"> </span>3</span>,<span class="_ _8"> </span><span class="fc8">100&gt;::</span>aux(str);</span></div><div class="t m0 x15 hf y7a ff5 fs5 fc9 sc0 ls0 ws0">case<span class="_ _15"> </span><span class="ffc fc8">2<span class="fc0">:<span class="_ _8"> </span></span></span>return<span class="_ _1b"> </span><span class="ffc fc0">fastStringToIntStr<span class="fc8">&lt;<span class="_ _1b"> </span>2</span>,<span class="_ _8"> </span><span class="fc8">10&gt;::</span>aux(str);</span></div><div class="t m0 x15 hf y7b ff5 fs5 fc9 sc0 ls0 ws0">case<span class="_ _15"> </span><span class="ffc fc8">1<span class="fc0">:<span class="_ _8"> </span></span></span>return<span class="_ _1b"> </span><span class="ffc fc0">fastStringToIntStr<span class="fc8">&lt;<span class="_ _1b"> </span>1</span>,<span class="_ _8"> </span><span class="fc8">1&gt;::</span>aux(str);</span></div><div class="t m0 x15 hf y7c ff5 fs5 fc9 sc0 ls0 ws0">default<span class="ffc fc8">:<span class="_ _8"> </span></span>return<span class="_"> </span><span class="ffc fc8">0<span class="fc0">;</span></span></div><div class="t m0 xf hf y7d ffc fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hf y7e ffc fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">12/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pff" class="pf w0 h0" data-page-no="f"><div class="pc pcf w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAImUlEQVR42u3ZsU0DQRCG0Vt0I6KTa0BEVIAQMZJbcOB6aIIOCKjBEgFF0AGRdQH2JEdG4MxOmEXvVbD6N/m0227vHwcAACjj8+P9ygoAAFQjUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAA+NUy0woAANQREV5SAQAoR6QCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAXRk7Ous8zy4MAOAy0zR1dFovqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQTAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAwP/UMtMKAADUERFeUgEAKEekAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQCAvo29HPT7cFhvti4M+rJ7ezUCABdomWkFAADqiAjf/QAAlCNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAICzjPvnGyv8la+nFyMAAJy4e1i3trpe9sdhWJbFIAAAlPADyLIjAKX8z44AAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Lo<span class="_ _3"></span>w-Level<span class="_ _1b"> </span>Pa<span class="_ _3"></span>rsing<span class="_ _1f"> </span>2/2</div><div class="t m0 x1 hd y7f ff5 fs7 fc9 sc0 ls0 ws0">template<span class="ffb fc8">&lt;</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">N,<span class="_ _9"> </span></span>unsigned<span class="_"> </span><span class="ffb fc0">MUL,<span class="_ _9"> </span></span>int<span class="_"> </span><span class="ffb fc0">INDEX<span class="fc8">&gt;</span></span></span></div><div class="t m0 x1 hd y80 ff5 fs7 fc9 sc0 ls0 ws0">struct<span class="_"> </span><span class="fc7">fastStringToIntStr<span class="_"> </span><span class="ffb fc0">{</span></span></div><div class="t m0 xd hd y81 ff5 fs7 fc9 sc0 ls0 ws0">static<span class="_"> </span>inline<span class="_"> </span><span class="fc6">unsigned<span class="_"> </span><span class="ffb fc7">aux<span class="fc0">(</span></span></span>const<span class="_"> </span><span class="fc6">char<span class="ffb fc8">*<span class="_ _9"> </span><span class="fc0">str)<span class="_ _9"> </span>{</span></span></span></div><div class="t m0 x16 hd y82 ff5 fs7 fc9 sc0 ls0 ws0">return<span class="_"> </span>static_cast<span class="ffb fc8">&lt;</span><span class="fc6">unsigned<span class="ffb fc8">&gt;<span class="fc0">(str[INDEX]<span class="_ _9"> </span></span>-<span class="_ _9"> </span><span class="ffd fca">&apos;<span class="ffb">0</span>&apos;</span><span class="fc0">)<span class="_ _e"> </span></span>*<span class="_ _1b"> </span><span class="fc0">MUL<span class="_ _20"> </span></span>+</span></span></div><div class="t m0 x17 hd y83 ffb fs7 fc0 sc0 ls0 ws0">fastStringToIntStr<span class="fc8">&lt;</span>N<span class="_ _9"> </span><span class="fc8">-<span class="_ _9"> </span>1</span>,<span class="_ _e"> </span>MUL<span class="_ _1b"> </span><span class="fc8">/<span class="_ _21"> </span>10</span>,<span class="_ _9"> </span>INDEX<span class="_ _9"> </span><span class="fc8">+<span class="_ _21"> </span>1&gt;::</span>aux(str);</div><div class="t m0 xd hd y84 ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hd y85 ffb fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 hd y86 ff5 fs7 fc9 sc0 ls0 ws0">template<span class="ffb fc8">&lt;</span><span class="fc6">unsigned<span class="_"> </span><span class="ffb fc0">MUL,<span class="_ _9"> </span></span>int<span class="_"> </span><span class="ffb fc0">INDEX<span class="fc8">&gt;</span></span></span></div><div class="t m0 x1 hd y87 ff5 fs7 fc9 sc0 ls0 ws0">struct<span class="_"> </span><span class="fc7">fastStringToIntStr<span class="ffb fc8">&lt;1<span class="fc0">,<span class="_ _9"> </span>MUL,<span class="_ _9"> </span>INDEX</span>&gt;<span class="_ _21"> </span><span class="fc0">{</span></span></span></div><div class="t m0 xd hd y88 ff5 fs7 fc9 sc0 ls0 ws0">static<span class="_"> </span>inline<span class="_"> </span><span class="fc6">unsigned<span class="_"> </span><span class="ffb fc7">aux<span class="fc0">(</span></span></span>const<span class="_"> </span><span class="fc6">char<span class="ffb fc8">*<span class="_ _9"> </span><span class="fc0">str)<span class="_ _9"> </span>{</span></span></span></div><div class="t m0 x16 hd y89 ff5 fs7 fc9 sc0 ls0 ws0">return<span class="_"> </span>static_cast<span class="ffb fc8">&lt;</span><span class="fc6">unsigned<span class="ffb fc8">&gt;<span class="fc0">(str[INDEX]<span class="_ _9"> </span></span>-<span class="_ _9"> </span><span class="ffd fca">&apos;<span class="ffb">0</span>&apos;</span><span class="fc0">);</span></span></span></div><div class="t m0 xd hd y8a ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hd y8b ffb fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 xb h10 y8c ffe fs7 fcc sc0 ls0 ws0">F<span class="_ _3"></span>aster<span class="_ _d"> </span>parsing:<span class="_ _f"> </span><span class="ffb">lemire.me/blog/tag/simd-swar-parsing</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">13/93</div><a class="l" href="https://lemire.me/blog/tag/simd-swar-parsing/"><div class="d m1" style="border-style:none;position:absolute;left:95.184000px;bottom:0.201000px;width:171.457000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf10" class="pf w0 h0" data-page-no="10"><div class="pc pc10 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Sp<span class="_ _b"></span>eed<span class="_ _1b"> </span>Up<span class="_ _1b"> </span>Raw<span class="_ _8"> </span>Data<span class="_ _9"> </span>Loading<span class="_ _22"> </span>1/2</div><div class="t m0 xb hb y8d ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Ha<span class="_ _3"></span>rd<span class="_ _f"> </span>disk<span class="_ _c"> </span>is<span class="_ _f"> </span>orders<span class="_ _c"> </span>of<span class="_ _c"> </span>magnitude<span class="_ _c"> </span>slow<span class="_ _3"></span>er<span class="_ _c"> </span>than<span class="_ _c"> </span>RAM</span></div><div class="t m0 xb hb y8e ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">P<span class="_ _3"></span>arsing<span class="_ _c"> </span>is<span class="_ _c"> </span>faster<span class="_ _f"> </span>than<span class="_ _c"> </span>data<span class="_ _f"> </span>reading</span></div><div class="t m0 xb hb y8f ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">P<span class="_ _3"></span>arsing<span class="_ _c"> </span>can<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _f"> </span>avoided<span class="_ _c"> </span>by<span class="_ _c"> </span>using<span class="_ _c"> </span><span class="ff9">binary<span class="_ _9"> </span></span>sto<span class="_ _3"></span>rage<span class="_ _f"> </span>and<span class="_ _10"> </span><span class="ff6">mmap</span></span></div><div class="t m0 xb hb y90 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Decreasing<span class="_ _c"> </span>the<span class="_ _f"> </span>numb<span class="_ _b"></span>er<span class="_ _c"> </span>of<span class="_ _f"> </span>ha<span class="_ _3"></span>rd<span class="_ _f"> </span>disk<span class="_ _c"> </span>accesses<span class="_ _f"> </span>improves<span class="_ _c"> </span>the<span class="_ _c"> </span>p<span class="_ _b"></span>erfo<span class="_ _3"></span>rmance<span class="_ _f"> </span><span class="fff">→</span></span></div><div class="t m0 x6 hb y91 ff1 fs6 fc0 sc0 ls0 ws0">comp<span class="_ _3"></span>ression</div><div class="t m0 x1 hb y92 ff1 fs6 fc0 sc0 ls0 ws0">LZ4<span class="_ _c"> </span><span class="ff4">is<span class="_ _c"> </span>lossless<span class="_ _f"> </span>compression<span class="_ _c"> </span>algo<span class="_ _3"></span>rithm<span class="_ _c"> </span>providing<span class="_ _c"> </span><span class="ff9">extremely<span class="_ _c"> </span>fast<span class="_ _f"> </span>decomp<span class="_ _3"></span>ression<span class="_ _f"> </span><span class="ff4">up<span class="_ _f"> </span>to</span></span></span></div><div class="t m0 x1 hb y93 ff4 fs6 fc0 sc0 ls0 ws0">35%<span class="_ _c"> </span>of<span class="_ _1b"> </span><span class="ff6">memcpy<span class="_ _f"> </span></span>and<span class="_ _c"> </span>go<span class="_ _b"></span>o<span class="_ _b"></span>d<span class="_ _f"> </span>compression<span class="_ _c"> </span>ratio</div><div class="t m0 x1 h11 y94 ff6 fs6 fc0 sc0 ls0 ws0">github.com/lz4/lz4</div><div class="t m0 x1 hb y95 ff4 fs6 fc0 sc0 ls0 ws0">Another<span class="_ _c"> </span>alternative<span class="_ _c"> </span>is<span class="_ _f"> </span><span class="ff1">Facebo<span class="_ _b"></span>ok<span class="_ _8"> </span>zstd</span></div><div class="t m0 x1 h11 y96 ff6 fs6 fc0 sc0 ls0 ws0">github.com/facebook/zstd</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">14/93</div><a class="l" href="https://github.com/lz4/lz4"><div class="d m1" style="border-style:none;position:absolute;left:27.350000px;bottom:53.363000px;width:105.083000px;height:11.992000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://github.com/facebook/zstd"><div class="d m1" style="border-style:none;position:absolute;left:27.350000px;bottom:11.764000px;width:139.447000px;height:11.993000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf11" class="pf w0 h0" data-page-no="11"><div class="pc pc11 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Sp<span class="_ _b"></span>eed<span class="_ _1b"> </span>Up<span class="_ _1b"> </span>Raw<span class="_ _8"> </span>Data<span class="_ _9"> </span>Loading<span class="_ _22"> </span>2/2</div><div class="t m0 x1 hb y97 ff4 fs6 fc0 sc0 ls0 ws0">P<span class="_ _3"></span>erformance<span class="_ _c"> </span>compa<span class="_ _3"></span>rison<span class="_ _f"> </span>of<span class="_ _c"> </span>different<span class="_ _f"> </span>metho<span class="_ _b"></span>ds<span class="_ _c"> </span>for<span class="_ _c"> </span>a<span class="_ _c"> </span>file<span class="_ _c"> </span>of<span class="_ _f"> </span>4.8<span class="_ _c"> </span>GB<span class="_ _f"> </span>of<span class="_ _c"> </span>integers.<span class="_ _21"> </span>They<span class="_ _f"> </span>a<span class="_ _3"></span>re</div><div class="t m0 x1 hb y98 ff4 fs6 fc0 sc0 ls0 ws0">explicit<span class="_ _c"> </span>values<span class="_ _c"> </span>in<span class="_ _f"> </span>a<span class="_ _c"> </span>text<span class="_ _f"> </span>file<span class="_ _c"> </span>in<span class="_ _f"> </span>the<span class="_ _c"> </span>case<span class="_ _c"> </span>of<span class="_ _9"> </span><span class="ff6">ifstream<span class="_ _c"> </span></span>and<span class="_ _f"> </span><span class="ff6">memory<span class="_"> </span>mapped</span>,<span class="_ _c"> </span>while<span class="_ _c"> </span>binary</div><div class="t m0 x1 hb y99 ff4 fs6 fc0 sc0 ls0 ws0">values<span class="_ _c"> </span>for<span class="_ _c"> </span>LZ4</div><div class="t m0 x18 h6 y9a ff1 fs4 fc0 sc0 ls0 ws0">Load<span class="_ _c"> </span>Metho<span class="_ _b"></span>d<span class="_ _23"> </span>Exec.<span class="_ _21"> </span>Time<span class="_ _24"> </span>Sp<span class="_ _b"></span>eedup</div><div class="t m0 x19 h6 y9b ff6 fs4 fc0 sc0 ls0 ws0">ifstream<span class="_"> </span>+<span class="_"> </span>parsing<span class="_ _25"> </span><span class="ff4">102<span class="_ _26"> </span>667<span class="_ _d"> </span>ms<span class="_ _27"> </span>1.0x</span></div><div class="t m0 x19 h6 y9c ff6 fs4 fc0 sc0 ls0 ws0">memory<span class="_"> </span>mapped<span class="_"> </span>+<span class="_"> </span>parsing<span class="_"> </span>(first<span class="_"> </span>run)<span class="_ _28"> </span><span class="ff4">30<span class="_ _26"> </span>235<span class="_ _d"> </span>ms<span class="_ _27"> </span>3.4x</span></div><div class="t m0 x19 h6 y9d ff6 fs4 fc0 sc0 ls0 ws0">memory<span class="_"> </span>mapped<span class="_"> </span>+<span class="_"> </span>parsing<span class="_"> </span>(second<span class="_"> </span>run)<span class="_ _29"> </span><span class="ff4">22<span class="_ _26"> </span>509<span class="_ _d"> </span>ms<span class="_ _27"> </span>4.5x</span></div><div class="t m0 x19 h6 y9e ff6 fs4 fc0 sc0 ls0 ws0">memory<span class="_"> </span>mapped<span class="_"> </span>+<span class="_"> </span>lz4<span class="_"> </span>(first<span class="_"> </span>run)<span class="_ _2a"> </span><span class="ff4">3<span class="_ _26"> </span>914<span class="_ _d"> </span>ms<span class="_ _2b"> </span>26.2x</span></div><div class="t m0 x19 h6 y9f ff6 fs4 fc0 sc0 ls0 ws0">memory<span class="_"> </span>mapped<span class="_"> </span>+<span class="_"> </span>lz4<span class="_"> </span>(second<span class="_"> </span>run)<span class="_ _2c"> </span><span class="ff4">1<span class="_ _26"> </span>261<span class="_ _d"> </span>ms<span class="_ _2b"> </span>81.4x</span></div><div class="t m0 x1 h6 ya0 ff4 fs4 fc0 sc0 ls0 ws0">NOTE:<span class="_ _d"> </span>the<span class="_ _c"> </span>size<span class="_ _d"> </span>of<span class="_ _c"> </span>the<span class="_ _d"> </span>Lz4<span class="_ _c"> </span>comp<span class="_ _3"></span>ressed<span class="_ _c"> </span>file<span class="_ _d"> </span>is<span class="_ _c"> </span>1,8<span class="_ _d"> </span>GB</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">15/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf12" class="pf w0 h0" data-page-no="12"><div class="pc pc12 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x8 h2 ya1 ff1 fs0 fc0 sc0 ls0 ws0">Memo<span class="_ _7"></span>ry</div><div class="t m0 x8 h2 ya2 ff1 fs0 fc0 sc0 ls0 ws0">Optimizations</div><a class="l" href="#pf12" data-dest-detail='[18,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:149.618000px;width:241.993000px;height:24.025000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf12" data-dest-detail='[18,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:115.247000px;width:158.930000px;height:24.025000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf13" class="pf w0 h0" data-page-no="13"><div class="pc pc13 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIXklEQVR42u3YsQ2CQBiG4TvDhdIZCJUTGENt4mYu4TgUDMEGVpRec3bM8EOeZ4SvevPl8T4lAAAIY13mixUAAIhGpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAsMu1VisAABBHKcWTCgBAOCIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRagIAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACLVBAAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAADn0W3vwQon831+jAAAHNft8cr52rftl1JrzSAAAITwB9jnFAQqxEvmAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Heap<span class="_ _1b"> </span>Memo<span class="_ _3"></span>ry</div><div class="t m0 xb hb ya3 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">Dynamic<span class="_ _c"> </span>heap<span class="_ _f"> </span>allo<span class="_ _b"></span>cation<span class="_ _c"> </span>is<span class="_ _f"> </span>exp<span class="_ _b"></span>ensive<span class="_ _0"></span><span class="ff4">:<span class="_ _9"> </span>implementation<span class="_ _f"> </span>dep<span class="_ _b"></span>endent<span class="_ _c"> </span>and<span class="_ _f"> </span>interact</span></span></div><div class="t m0 x6 hb ya4 ff4 fs6 fc0 sc0 ls0 ws0">with<span class="_ _c"> </span>the<span class="_ _c"> </span>op<span class="_ _0"></span>erating<span class="_ _c"> </span>system</div><div class="t m0 xb hb ya5 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">Many<span class="_ _c"> </span>small<span class="_ _c"> </span>heap<span class="_ _f"> </span>allo<span class="_ _b"></span>cations<span class="_ _c"> </span>are<span class="_ _c"> </span>mo<span class="_ _3"></span>re<span class="_ _f"> </span>exp<span class="_ _b"></span>ensive<span class="_ _c"> </span>than<span class="_ _c"> </span>one<span class="_ _f"> </span>large<span class="_ _c"> </span>memo<span class="_ _3"></span>ry<span class="_ _c"> </span>allo<span class="_ _b"></span>cation</span></div><div class="t m0 x6 h6 ya6 ff4 fs4 fc0 sc0 ls0 ws0">The<span class="_ _d"> </span>default<span class="_ _c"> </span>page<span class="_ _d"> </span>size<span class="_ _c"> </span>on<span class="_ _d"> </span>Linux<span class="_ _c"> </span>is<span class="_ _d"> </span>4<span class="_ _c"> </span>KB.<span class="_ _d"> </span>Fo<span class="_ _3"></span>r<span class="_ _c"> </span>smaller/multiple<span class="_ _d"> </span>sizes,<span class="_ _c"> </span>C++<span class="_ _d"> </span>uses<span class="_ _c"> </span>a</div><div class="t m0 x6 h6 ya7 ff4 fs4 fc0 sc0 ls0 ws0">sub-allo<span class="_ _b"></span>cato<span class="_ _3"></span>r</div><div class="t m0 xb hb ya8 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">Allo<span class="_ _b"></span>cations<span class="_ _c"> </span>within<span class="_ _f"> </span>the<span class="_ _c"> </span>page<span class="_ _f"> </span>size<span class="_ _c"> </span>is<span class="_ _f"> </span>faster<span class="_ _c"> </span>than<span class="_ _f"> </span>la<span class="_ _3"></span>rger<span class="_ _f"> </span>allo<span class="_ _b"></span>cations<span class="_ _9"> </span><span class="ff4">(sub-allo<span class="_ _b"></span>cato<span class="_ _3"></span>r)</span></span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">16/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf14" class="pf w0 h0" data-page-no="14"><div class="pc pc14 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Stack<span class="_ _1b"> </span>Memo<span class="_ _3"></span>ry</div><div class="t m0 xb hb ya9 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">Stack<span class="_ _c"> </span>memory<span class="_ _c"> </span>is<span class="_ _c"> </span>faster<span class="_ _c"> </span>than<span class="_ _f"> </span>heap<span class="_ _c"> </span>memory<span class="ff4">.<span class="_ _9"> </span>The<span class="_ _f"> </span>stack<span class="_ _c"> </span>memory<span class="_ _c"> </span>p<span class="_ _3"></span>rovides<span class="_ _f"> </span>high</span></span></div><div class="t m0 x6 hb yaa ff4 fs6 fc0 sc0 ls0 ws0">lo<span class="_ _b"></span>calit<span class="_ _3"></span>y<span class="_ _3"></span>,<span class="_ _c"> </span>it<span class="_ _c"> </span>is<span class="_ _c"> </span>small<span class="_ _f"> </span>(cache<span class="_ _c"> </span>fit),<span class="_ _f"> </span>and<span class="_ _c"> </span>its<span class="_ _c"> </span>size<span class="_ _f"> </span>is<span class="_ _c"> </span>known<span class="_ _c"> </span>at<span class="_ _c"> </span>compile-time.</div><div class="t m0 xb hb yab ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _15"> </span><span class="ff5">static<span class="_ _10"> </span><span class="ff4">stack<span class="_ _c"> </span>allo<span class="_ _b"></span>cations<span class="_ _c"> </span>produce<span class="_ _f"> </span>b<span class="_ _b"></span>etter<span class="_ _f"> </span>co<span class="_ _b"></span>de<span class="_ _c"> </span>b<span class="_ _b"></span>ecause<span class="_ _f"> </span>it<span class="_ _c"> </span>avoids<span class="_ _f"> </span>filling<span class="_ _c"> </span>the<span class="_ _f"> </span>stack</span></span></div><div class="t m0 x6 hb yac ff4 fs6 fc0 sc0 ls0 ws0">each<span class="_ _c"> </span>time<span class="_ _c"> </span>the<span class="_ _f"> </span>function<span class="_ _c"> </span>is<span class="_ _f"> </span>reached.</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">17/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf15" class="pf w0 h0" data-page-no="15"><div class="pc pc15 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff5 fs3 fc1 sc0 ls0 ws0">constexpr<span class="_ _1b"> </span><span class="ff1">vs.<span class="_ _2d"> </span></span>static<span class="_"> </span>constexpr</div><div class="t m0 x1a hb y6d ff5 fs6 fc0 sc0 ls0 ws0">constexpr<span class="_ _10"> </span><span class="ff4">and<span class="_ _10"> </span></span>static<span class="_"> </span>constexpr<span class="_ _10"> </span><span class="ff4">va<span class="_ _3"></span>riables<span class="_ _c"> </span>could<span class="_ _f"> </span>produce<span class="_ _c"> </span>very<span class="_ _f"> </span>different<span class="_ _c"> </span>co<span class="_ _b"></span>de.</span></div><div class="t m0 xb h6 yad ff8 fs4 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Stack-lo<span class="_ _b"></span>cal<span class="_ _12"> </span><span class="ff5">constexpr<span class="_ _12"> </span></span>variable<span class="_ _d"> </span>can<span class="_ _d"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>slightly<span class="_ _d"> </span>faster<span class="_ _c"> </span>than<span class="_ _12"> </span><span class="ff5">static<span class="_"> </span>constexpr<span class="_ _12"> </span></span>for</span></div><div class="t m0 x6 h6 yae ff4 fs4 fc0 sc0 ls0 ws0">sizes<span class="_ _d"> </span>less<span class="_ _c"> </span>than<span class="_ _10"> </span>136144<span class="_ _d"> </span>bytes<span class="_ _d"> </span>.</div><div class="t m0 xb h6 yaf ff8 fs4 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Larger<span class="_ _d"> </span>data,<span class="_ _d"> </span>such<span class="_ _c"> </span>as<span class="_ _d"> </span>greater<span class="_ _c"> </span>than<span class="_ _d"> </span><span class="fff"></span>2KB,<span class="_ _c"> </span>cop<span class="_ _3"></span>ying<span class="_ _c"> </span>into<span class="_ _d"> </span>the<span class="_ _c"> </span>stack<span class="_ _d"> </span>b<span class="_ _b"></span>ecomes<span class="_ _c"> </span>very<span class="_ _d"> </span>exp<span class="_ _b"></span>ensive,</span></div><div class="t m0 x6 h6 yb0 ff4 fs4 fc0 sc0 ls0 ws0">making<span class="_ _12"> </span><span class="ff5">static<span class="_"> </span>constexpr<span class="_ _12"> </span></span>much<span class="_ _c"> </span>faster.</div><div class="t m0 xb h6 yb1 ff8 fs4 fc0 sc0 ls0 ws0">•<span class="_ _15"> </span><span class="ff5">static<span class="_"> </span>constexpr<span class="_ _12"> </span><span class="ff4">is<span class="_ _d"> </span>faster<span class="_ _c"> </span>with<span class="_ _d"> </span>low<span class="_ _3"></span>er<span class="_ _c"> </span>optimization<span class="_ _d"> </span>options<span class="_ _c"> </span>(<span class="_ _26"> </span><span class="ff6">-O0<span class="_ _d"> </span></span>,<span class="_ _12"> </span><span class="ff6">-O1<span class="_ _d"> </span></span>).</span></span></div><div class="t m0 xb h6 yb2 ff8 fs4 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff6">clang<span class="_ _d"> </span><span class="ff4">and<span class="_ _c"> </span></span>msvc<span class="_ _d"> </span><span class="ff4">are<span class="_ _d"> </span>generally<span class="_ _c"> </span>emits<span class="_ _d"> </span>identical<span class="_ _c"> </span>code<span class="_ _c"> </span>in<span class="_ _d"> </span>b<span class="_ _b"></span>oth<span class="_ _c"> </span>cases.</span></span></div><div class="t m0 xb h6 yb3 ff8 fs4 fc0 sc0 ls0 ws0">•<span class="_ _15"> </span><span class="ff5">constexpr<span class="_ _12"> </span><span class="ff4">variable<span class="_ _d"> </span>with<span class="_ _d"> </span>dynamic<span class="_ _c"> </span>indexing<span class="_ _d"> </span>produces<span class="_ _c"> </span>very<span class="_ _d"> </span>inefficient<span class="_ _c"> </span>code<span class="_ _c"> </span>with<span class="_ _d"> </span>GCC.</span></span></div><div class="t m0 x1 hf yb4 ffa fs5 fc5 sc0 ls0 ws0">//constexpr<span class="_ _2e"> </span>int<span class="_ _8"> </span>array[]<span class="_ _1b"> </span>=<span class="_ _8"> </span>{1,2,3,4,5,6,7,8,9};<span class="_ _1b"> </span>//<span class="_ _8"> </span>bad<span class="_ _1b"> </span>performance<span class="_ _8"> </span>with<span class="_ _1b"> </span>GCC</div><div class="t m0 x1 hf yb5 ff5 fs5 fc9 sc0 ls0 ws0">static<span class="_"> </span>constexpr<span class="_"> </span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">array[]<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span></span>{<span class="fc8">1</span>,<span class="fc8">2</span>,<span class="fc8">3</span>,<span class="fc8">4</span>,<span class="fc8">5</span>,<span class="fc8">6</span>,<span class="fc8">7</span>,<span class="fc8">8</span>,<span class="fc8">9</span>};</span></span></div><div class="t m0 x1 hf yb6 ff5 fs5 fc9 sc0 ls0 ws0">return<span class="_"> </span><span class="ffc fc0">array[index];</span></div><div class="t m0 xb hd yb7 ffb fs7 fcc sc0 ls0 ws0">C++<span class="_ _9"> </span>Weekly<span class="_ _9"> </span>-<span class="_ _21"> </span>Ep<span class="_ _9"> </span>315<span class="_ _21"> </span>-<span class="_ _9"> </span>constexpr<span class="_ _21"> </span>vs<span class="_ _9"> </span>static<span class="_ _9"> </span>constexpr</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">18/93</div><a class="l" href="https://www.youtube.com/watch?v=IDQ0ng8RIqs"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:2.030000px;width:242.067000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf16" class="pf w0 h0" data-page-no="16"><div class="pc pc16 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Cache<span class="_ _1b"> </span>Utilization</div><div class="t m0 x1 hb y6d ff1 fs6 fc0 sc0 ls0 ws0">Maximize<span class="_ _f"> </span>cache<span class="_ _8"> </span>utilization<span class="ff4">:</span></div><div class="t m0 xb hb yb8 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Maximize<span class="_ _c"> </span>spatial<span class="_ _f"> </span>and<span class="_ _c"> </span>temp<span class="_ _b"></span>oral<span class="_ _c"> </span>lo<span class="_ _b"></span>calit<span class="_ _3"></span>y<span class="_ _f"> </span>(see<span class="_ _c"> </span>next<span class="_ _f"> </span>examples)</span></div><div class="t m0 xb hb yb9 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _c"> </span>small<span class="_ _f"> </span>data<span class="_ _c"> </span>types</span></div><div class="t m0 xb hb yba ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">F<span class="_ _3"></span>or<span class="_ _c"> </span>basic<span class="_ _c"> </span>set<span class="_ _f"> </span>query<span class="_ _c"> </span>and<span class="_ _f"> </span>insertion:</span></div><div class="t m0 x12 h6 ybb ff8 fs4 fc0 sc0 ls0 ws0">◦<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _12"> </span><span class="ff6">std::vector&lt;bool&gt;<span class="_ _12"> </span></span>over<span class="_ _c"> </span>a<span class="_ _d"> </span><span class="ff9">dynamic<span class="_ _8"> </span></span>arra<span class="_ _3"></span>y<span class="_ _c"> </span>of<span class="_ _12"> </span><span class="ff6">bool</span></span></div><div class="t m0 x12 h6 ybc ff8 fs4 fc0 sc0 ls0 ws0">◦<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _12"> </span><span class="ff6">std::bitset<span class="_ _12"> </span></span>over<span class="_ _12"> </span><span class="ff6">std::vector&lt;bool&gt;<span class="_ _12"> </span></span>if<span class="_ _c"> </span>the<span class="_ _d"> </span>data<span class="_ _c"> </span>size<span class="_ _d"> </span>is<span class="_ _c"> </span>known<span class="_ _d"> </span>in</span></div><div class="t m0 x1b h6 ybd ff4 fs4 fc0 sc0 ls0 ws0">advance<span class="_ _d"> </span>or<span class="_ _d"> </span>b<span class="_ _b"></span>ounded.<span class="_ _1b"> </span><span class="ff9">Fixed-size<span class="_ _8"> </span></span>a<span class="_ _3"></span>rray<span class="_ _d"> </span>of<span class="_ _12"> </span><span class="ff6">bool<span class="_ _12"> </span></span>should<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>alw<span class="_ _3"></span>ays<span class="_ _d"> </span>replaced<span class="_ _d"> </span>by</div><div class="t m0 x19 hc ybe ff6 fs4 fc0 sc0 ls0 ws0">std::bitset</div><div class="t m0 x12 h6 ybf ff8 fs4 fc0 sc0 ls0 ws0">◦<span class="_ _6"> </span><span class="ff4">Rememb<span class="_ _b"></span>er<span class="_ _d"> </span>that<span class="_ _c"> </span>common<span class="_ _d"> </span>std<span class="_ _c"> </span>algorithms<span class="_ _d"> </span>could<span class="_ _d"> </span>not<span class="_ _c"> </span>be<span class="_ _c"> </span>optimized<span class="_ _d"> </span>for<span class="_ _d"> </span>these<span class="_ _c"> </span>containers,</span></div><div class="t m0 x1b h6 yc0 ff4 fs4 fc0 sc0 ls0 ws0">e.g.<span class="_ _2f"> </span><span class="ff6">std::count_if<span class="_ _26"> </span></span>,<span class="_ _10"> </span><span class="ff6">std::find</span></div><div class="t m0 xb hb yc1 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _c"> </span><span class="ff9">stack<span class="_ _9"> </span></span>data<span class="_ _c"> </span>structures<span class="_ _f"> </span><span class="ff9">instead<span class="_ _9"> </span></span>of<span class="_ _f"> </span>heap<span class="_ _c"> </span>data<span class="_ _f"> </span>structures,<span class="_ _c"> </span>e.g.<span class="_ _4"> </span><span class="ff6">std::vector</span></span></div><div class="t m0 x6 hb yc2 ff4 fs6 fc0 sc0 ls0 ws0">vs.<span class="_ _4"> </span><span class="ff6">static_vector<span class="_ _2d"> </span><span class="ff10 fs8"></span></span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">19/93</div><a class="l" href="https://github.com/volt-software/Ichor/blob/dev/include/ichor/stl/StaticVector.h"><div class="d m1" style="border-style:none;position:absolute;left:66.259000px;bottom:11.106000px;width:91.432000px;height:16.327000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf17" class="pf w0 h0" data-page-no="17"><div class="pc pc17 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Spatial<span class="_ _1b"> </span>Lo<span class="_ _b"></span>cality<span class="_ _8"> </span>Example<span class="_ _30"> </span>1/2</div><div class="t m0 x1 hb y6d ff6 fs6 fc0 sc0 ls0 ws0">A,<span class="_"> </span>B,<span class="_"> </span>C<span class="_ _c"> </span><span class="ff4">matrices<span class="_ _c"> </span>of<span class="_ _f"> </span>size<span class="_ _c"> </span><span class="ff9">N<span class="_ _c"> </span><span class="fff">×<span class="_ _31"> </span></span>N</span></span></div><div class="t m0 x1a h11 yc3 ff6 fs6 fc0 sc0 ls0 ws0">C<span class="_"> </span>=<span class="_"> </span>A<span class="_"> </span>*<span class="_"> </span>B</div><div class="t m0 x1c hf yc4 ff5 fs5 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffc fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">i<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span>0</span>;<span class="_ _1b"> </span>i<span class="_ _1b"> </span><span class="fc8">&lt;<span class="_ _8"> </span></span>N;<span class="_ _1b"> </span>i<span class="fc8">++</span>)<span class="_ _1b"> </span>{</span></span></div><div class="t m0 x1d hf yc5 ff5 fs5 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffc fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">j<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span>0</span>;<span class="_ _1b"> </span>j<span class="_ _1b"> </span><span class="fc8">&lt;<span class="_ _8"> </span></span>N;<span class="_ _1b"> </span>j<span class="fc8">++</span>)<span class="_ _1b"> </span>{</span></span></div><div class="t m0 x1e hf yc6 ff5 fs5 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffc fc0">sum<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span>0</span>;</span></div><div class="t m0 x1e hf yc7 ff5 fs5 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffc fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">k<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span>0</span>;<span class="_ _1b"> </span>k<span class="_ _1b"> </span><span class="fc8">&lt;<span class="_ _8"> </span></span>N;<span class="_ _1b"> </span>k<span class="fc8">++</span>)</span></span></div><div class="t m0 x1f hf yc8 ffc fs5 fc0 sc0 ls0 ws0">sum<span class="_ _8"> </span><span class="fc8">+=<span class="_ _1b"> </span></span>A[i][k]<span class="_ _1b"> </span><span class="fc8">*<span class="_ _8"> </span></span>B[k][j];<span class="_ _1b"> </span><span class="ffa fc5">//<span class="_ _8"> </span>row<span class="_ _1b"> </span><span class="ff11">×<span class="_ _8"> </span></span>column</span></div><div class="t m0 x1e hf yc9 ffc fs5 fc0 sc0 ls0 ws0">C[i][j]<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>sum;</div><div class="t m0 x1d hf yca ffc fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1c hf ycb ffc fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1a h11 ycc ff6 fs6 fc0 sc0 ls0 ws0">C<span class="_"> </span>=<span class="_"> </span>A<span class="_"> </span>*<span class="_"> </span>B</div><div class="t m0 x20 h12 ycd ff12 fs5 fc0 sc0 ls0 ws0">T</div><div class="t m0 x1c hf yce ff5 fs5 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffc fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">i<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span>0</span>;<span class="_ _1b"> </span>i<span class="_ _1b"> </span><span class="fc8">&lt;<span class="_ _8"> </span></span>N;<span class="_ _1b"> </span>i<span class="fc8">++</span>)<span class="_ _1b"> </span>{</span></span></div><div class="t m0 x1d hf ycf ff5 fs5 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffc fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">j<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span>0</span>;<span class="_ _1b"> </span>j<span class="_ _1b"> </span><span class="fc8">&lt;<span class="_ _8"> </span></span>N;<span class="_ _1b"> </span>j<span class="fc8">++</span>)<span class="_ _1b"> </span>{</span></span></div><div class="t m0 x1e hf yd0 ff5 fs5 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffc fc0">sum<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span>0</span>;</span></div><div class="t m0 x1e hf yd1 ff5 fs5 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffc fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">k<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span>0</span>;<span class="_ _1b"> </span>k<span class="_ _1b"> </span><span class="fc8">&lt;<span class="_ _8"> </span></span>N;<span class="_ _1b"> </span>k<span class="fc8">++</span>)</span></span></div><div class="t m0 x1f hf yd2 ffc fs5 fc0 sc0 ls0 ws0">sum<span class="_ _8"> </span><span class="fc8">+=<span class="_ _1b"> </span></span>A[i][k]<span class="_ _1b"> </span><span class="fc8">*<span class="_ _8"> </span><span class="fc3">B[j][k]</span></span>;<span class="_ _1b"> </span><span class="ffa fc5">//<span class="_ _8"> </span>row<span class="_ _1b"> </span><span class="ff11">×<span class="_ _8"> </span></span>row</span></div><div class="t m0 x1e hf yd3 ffc fs5 fc0 sc0 ls0 ws0">C[i][j]<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>sum;</div><div class="t m0 x1d hf yd4 ffc fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1c hf yd5 ffc fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">20/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf18" class="pf w0 h0" data-page-no="18"><div class="pc pc18 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIr0lEQVR42u3ZMUrEUBSG0TzJRcbGNYiVdQoRa4NkY27CvaSIhTtI4w6spkmY18TOWsHgHThnCX/1cW+5vX9sAAAgjY/3twsrAACQjUgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAOBbqbVaAQCAPCLCJRUAgHREKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAIC/15pgb8u6dv1gBwBIYp5GI+Tnkrq7q8PBCAAAv1JqrVYAACCPiHBJBQAgHZEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCAHBGWhPsbVnXrh/sAABJzNNohPxKrdUKAADkERHe/QAApCNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqSYAAECkAgCASAUA4Ny0Jtjbsq5dP9gBAJKYp9EI+ZVaqxUAAMgjIrz7AQBIR6QCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAADw79rjy40V2Nvn06sRAIAfunt4LuX6cjuemmbbNoMAAJDCF+mELxoII1E3AAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Spatial<span class="_ _1b"> </span>Lo<span class="_ _b"></span>cality<span class="_ _8"> </span>Example<span class="_ _30"> </span>2/2</div><div class="t m0 x1 hb yd6 ff1 fs6 fc0 sc0 ls0 ws0">Benchma<span class="_ _3"></span>rk:</div><div class="t m0 x16 h11 yd7 ff5 fs6 fc0 sc0 ls0 ws0">N<span class="_ _32"> </span><span class="ff6">64<span class="_ _33"> </span>128<span class="_ _33"> </span>256<span class="_ _33"> </span>512<span class="_ _34"> </span>1024</span></div><div class="t m0 x16 hb yd8 ff6 fs6 fc0 sc0 ls0 ws0">A<span class="_"> </span>*<span class="_"> </span>B<span class="_ _35"> </span><span class="ff13">&lt;<span class="_ _c"> </span><span class="ff4">1<span class="_ _c"> </span>ms<span class="_ _36"> </span>5<span class="_ _c"> </span>ms<span class="_ _28"> </span>29<span class="_ _c"> </span>ms<span class="_ _37"> </span>141<span class="_ _c"> </span>ms<span class="_ _38"> </span>1,030<span class="_ _c"> </span>ms</span></span></div><div class="t m0 x16 h11 yd9 ff6 fs6 fc0 sc0 ls0 ws0">A<span class="_"> </span>*<span class="_"> </span>B</div><div class="t m0 x21 h12 yda ff12 fs5 fc0 sc0 ls0 ws0">T</div><div class="t m0 x22 hb yd9 ff13 fs6 fc0 sc0 ls0 ws0">&lt;<span class="_ _c"> </span><span class="ff4">1<span class="_ _c"> </span>ms<span class="_ _36"> </span>2<span class="_ _c"> </span>ms<span class="_ _36"> </span>6<span class="_ _c"> </span>ms<span class="_ _28"> </span>48<span class="_ _c"> </span>ms<span class="_ _37"> </span>385<span class="_ _c"> </span>ms</span></div><div class="t m0 x16 hb ydb ff6 fs6 fc0 sc0 ls0 ws0">Speedup<span class="_ _39"> </span><span class="ff4">/<span class="_ _3a"> </span>2.5x<span class="_ _3a"> </span>4.8x<span class="_ _3a"> </span>2.9x<span class="_ _3a"> </span>2.7x</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">21/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf19" class="pf w0 h0" data-page-no="19"><div class="pc pc19 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">T<span class="_ _7"></span>emporal-Locality<span class="_ _8"> </span>Example</div><div class="t m0 x1 hb ydc ff1 fs6 fc0 sc0 ls0 ws0">Sp<span class="_ _b"></span>eeding<span class="_ _8"> </span>up<span class="_ _f"> </span>a<span class="_ _8"> </span>random-access<span class="_ _8"> </span>function</div><div class="t m0 x1 hd ydd ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>N;<span class="_ _9"> </span>i<span class="fc8">++</span>)<span class="_ _3b"> </span><span class="ffa fc5">//<span class="_ _9"> </span>V1</span></span></span></div><div class="t m0 xd hd yde ffb fs7 fc0 sc0 ls0 ws0">out_array[i]<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>in_array[hash(i)];</div><div class="t m0 x23 hd ydd ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">K<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>K<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>N;<span class="_ _9"> </span>K<span class="_ _21"> </span><span class="fc8">+=<span class="_ _9"> </span></span>CACHE)<span class="_ _9"> </span>{<span class="_ _21"> </span><span class="ffa fc5">//<span class="_ _9"> </span>V2</span></span></span></div><div class="t m0 x24 hd yde ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>N;<span class="_ _9"> </span>i<span class="fc8">++</span>)<span class="_ _21"> </span>{</span></span></div><div class="t m0 x25 hd ydf ff5 fs7 fc9 sc0 ls0 ws0">auto<span class="_"> </span><span class="ffb fc0">x<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>hash(i);</span></div><div class="t m0 x25 hd ye0 ff5 fs7 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffb fc0">(x<span class="_ _9"> </span><span class="fc8">&gt;=<span class="_ _9"> </span></span>K<span class="_ _21"> </span><span class="fc8">&amp;&amp;<span class="_ _9"> </span></span>x<span class="_ _21"> </span><span class="fc8">&lt;<span class="_ _9"> </span></span>K<span class="_ _21"> </span><span class="fc8">+<span class="_ _9"> </span></span>CACHE)</span></div><div class="t m0 x26 hd ye1 ffb fs7 fc0 sc0 ls0 ws0">out_array[i]<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>in_array[x];</div><div class="t m0 x24 hd ye2 ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x23 hd ye3 ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1a h6 ye4 ff6 fs4 fc0 sc0 ls0 ws0">V1<span class="_ _26"> </span><span class="ff4">:<span class="_ _9"> </span>436<span class="_ _c"> </span>ms,<span class="_ _12"> </span></span>V2<span class="_ _26"> </span><span class="ff4">:<span class="_ _1b"> </span>336<span class="_ _c"> </span>ms<span class="_ _d"> </span><span class="fff">→<span class="_ _c"> </span></span>1.3x<span class="_ _d"> </span>sp<span class="_ _b"></span>eedup<span class="_ _c"> </span>(temp<span class="_ _b"></span>oral<span class="_ _d"> </span>lo<span class="_ _b"></span>calit<span class="_ _3"></span>y<span class="_ _c"> </span>imp<span class="_ _3"></span>rovement)</span></div><div class="t m0 x1 h6 ye5 ff4 fs4 fc0 sc0 ls0 ws0">..<span class="_ _1b"> </span>but<span class="_ _c"> </span>it<span class="_ _d"> </span>needs<span class="_ _c"> </span>a<span class="_ _d"> </span>careful<span class="_ _d"> </span>evaluation<span class="_ _d"> </span>of<span class="_ _10"> </span><span class="ff6">CACHE<span class="_ _26"> </span></span>,<span class="_ _c"> </span>and<span class="_ _d"> </span>it<span class="_ _c"> </span>can<span class="_ _d"> </span>even<span class="_ _c"> </span>decrease<span class="_ _d"> </span>the<span class="_ _c"> </span>performance<span class="_ _d"> </span>for</div><div class="t m0 x1 h6 ye6 ff4 fs4 fc0 sc0 ls0 ws0">other<span class="_ _d"> </span>sizes</div><div class="t m0 x1 h6 ye7 ff4 fs4 fc0 sc0 ls0 ws0">p<span class="_ _3"></span>re-sorted<span class="_ _12"> </span><span class="ff6">hash(i)<span class="_ _26"> </span></span>:<span class="_ _9"> </span>135<span class="_ _d"> </span>ms<span class="_ _c"> </span><span class="fff">→<span class="_ _d"> </span></span>3.2x<span class="_ _c"> </span>sp<span class="_ _b"></span>eedup<span class="_ _d"> </span>(spatial<span class="_ _c"> </span>lo<span class="_ _b"></span>cality<span class="_ _d"> </span>imp<span class="_ _3"></span>rovement)</div><div class="t m0 xb hd ye8 ffb fs7 fcc sc0 ls0 ws0">lemire.me/blog/2019/04/27</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">22/93</div><a class="l" href="https://lemire.me/blog/2019/04/27/speeding-up-a-random-access-function/"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:5.099000px;width:119.676000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf1a" class="pf w0 h0" data-page-no="1a"><div class="pc pc1a w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _1b"> </span>Alignment</div><div class="t m0 x1 hb y6d ff1 fs6 fc0 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _8"> </span>alignment<span class="_ _c"> </span><span class="ff4">refers<span class="_ _f"> </span>to<span class="_ _c"> </span>placing<span class="_ _f"> </span>data<span class="_ _c"> </span>in<span class="_ _f"> </span>memory<span class="_ _c"> </span>at<span class="_ _c"> </span>addresses<span class="_ _c"> </span>that<span class="_ _f"> </span>confo<span class="_ _3"></span>rm<span class="_ _f"> </span>to</span></div><div class="t m0 x1 hb ye9 ff4 fs6 fc0 sc0 ls0 ws0">certain<span class="_ _c"> </span>b<span class="_ _b"></span>oundaries,<span class="_ _c"> </span>t<span class="_ _3"></span>ypically<span class="_ _f"> </span>p<span class="_ _b"></span>o<span class="_ _3"></span>wers<span class="_ _c"> </span>of<span class="_ _c"> </span>tw<span class="_ _3"></span>o<span class="_ _c"> </span>(e.g.,<span class="_ _f"> </span>1,<span class="_ _c"> </span>2,<span class="_ _c"> </span>4,<span class="_ _f"> </span>8,<span class="_ _c"> </span>16<span class="_ _f"> </span>bytes,<span class="_ _c"> </span>etc.)</div><div class="t m0 x1 h6 yea ff9 fs4 fc0 sc0 ls0 ws0">Note<span class="_ _0"></span><span class="ff4">:<span class="_ _8"> </span>Fo<span class="_ _3"></span>r<span class="_ _c"> </span>multidimensional<span class="_ _d"> </span>data,<span class="_ _c"> </span>alignment<span class="_ _d"> </span>only<span class="_ _c"> </span>means<span class="_ _d"> </span>that<span class="_ _c"> </span>the<span class="_ _d"> </span>start<span class="_ _d"> </span>address<span class="_ _d"> </span>of<span class="_ _c"> </span>the<span class="_ _d"> </span>data<span class="_ _c"> </span>is</span></div><div class="t m0 x1 h6 yeb ff4 fs4 fc0 sc0 ls0 ws0">aligned,<span class="_ _d"> </span>not<span class="_ _c"> </span>that<span class="_ _d"> </span>all<span class="_ _c"> </span>sta<span class="_ _3"></span>rt<span class="_ _c"> </span>offsets<span class="_ _d"> </span>for<span class="_ _d"> </span>all<span class="_ _c"> </span>dimensions<span class="_ _d"> </span>are<span class="_ _d"> </span>aligned.,<span class="_ _d"> </span>e.g.<span class="_ _9"> </span>for<span class="_ _d"> </span>a<span class="_ _d"> </span>2D<span class="_ _c"> </span>matrix,<span class="_ _d"> </span>if</div><div class="t m0 x1a h6 yec ff6 fs4 fc0 sc0 ls0 ws0">row[0][0]<span class="_ _12"> </span><span class="ff4">is<span class="_ _d"> </span>aligned<span class="_ _c"> </span>doesnt<span class="_ _c"> </span>imply<span class="_ _d"> </span>that<span class="_ _12"> </span></span>row[1][0]<span class="_ _12"> </span><span class="ff4">has<span class="_ _c"> </span>the<span class="_ _d"> </span>same<span class="_ _d"> </span>property<span class="_ _7"></span>.<span class="_ _1b"> </span>Also<span class="_ _c"> </span>the<span class="_ _d"> </span>strides</span></div><div class="t m0 x1 h6 yed ff4 fs4 fc0 sc0 ls0 ws0">b<span class="_ _b"></span>et<span class="_ _3"></span>ween<span class="_ _d"> </span>rows<span class="_ _d"> </span>need<span class="_ _d"> </span>to<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _d"> </span>multiple<span class="_ _c"> </span>of<span class="_ _d"> </span>the<span class="_ _c"> </span>alignment</div><div class="t m0 x1 hb yee ff1 fs6 fc0 sc0 ls0 ws0">Data<span class="_ _f"> </span>alignment<span class="_ _f"> </span><span class="ff4">is<span class="_ _c"> </span>classified<span class="_ _f"> </span>in:</span></div><div class="t m0 xb hb yef ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Internal<span class="_ _8"> </span>alignment<span class="_ _c"> </span><span class="ff4">for<span class="_ _c"> </span>struct/class<span class="_ _c"> </span>la<span class="_ _3"></span>yout<span class="_ _c"> </span>optimization<span class="_ _c"> </span><span class="fff">→<span class="_ _f"> </span></span>reducing<span class="_ _c"> </span>memory</span></span></div><div class="t m0 x6 hb yf0 ff4 fs6 fc0 sc0 ls0 ws0">fo<span class="_ _b"></span>otp<span class="_ _3"></span>rint,<span class="_ _f"> </span>optimizing<span class="_ _c"> </span>memory<span class="_ _c"> </span>bandwidth,<span class="_ _c"> </span>and<span class="_ _f"> </span>minimizing<span class="_ _c"> </span>cache-line<span class="_ _c"> </span>misses</div><div class="t m0 xb hb yf1 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">External<span class="_ _8"> </span>alignment<span class="_ _c"> </span><span class="ff4">across<span class="_ _c"> </span>several<span class="_ _f"> </span>elements<span class="_ _c"> </span>of<span class="_ _f"> </span>the<span class="_ _c"> </span>same<span class="_ _f"> </span>type<span class="_ _c"> </span><span class="fff">→<span class="_ _f"> </span></span>minimizing</span></span></div><div class="t m0 x6 hb yf2 ff4 fs6 fc0 sc0 ls0 ws0">cache-line<span class="_ _c"> </span>misses,<span class="_ _c"> </span>vectorization<span class="_ _c"> </span>(SIMD<span class="_ _c"> </span>instructions)</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">23/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf1b" class="pf w0 h0" data-page-no="1b"><div class="pc pc1b w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Internal<span class="_ _1b"> </span>Structure<span class="_ _1b"> </span>Alignment</div><div class="t m0 x1 hd yf3 ff5 fs7 fc9 sc0 ls0 ws0">struct<span class="_"> </span><span class="fc7">A1<span class="_"> </span><span class="ffb fc0">{</span></span></div><div class="t m0 x27 hd yf4 ff5 fs7 fc6 sc0 ls0 ws0">char<span class="_ _14"> </span><span class="ffb fc0">x1;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _21"> </span>offset<span class="_ _9"> </span>0</span></span></div><div class="t m0 x27 hd yf5 ff5 fs7 fc6 sc0 ls0 ws0">double<span class="_"> </span><span class="ffb fc0">y1;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _9"> </span>offset<span class="_ _21"> </span>8!!<span class="_ _9"> </span>(not<span class="_ _21"> </span>1)</span></span></div><div class="t m0 x27 hd yf6 ff5 fs7 fc6 sc0 ls0 ws0">char<span class="_ _14"> </span><span class="ffb fc0">x2;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _21"> </span>offset<span class="_ _9"> </span>16</span></span></div><div class="t m0 x27 hd yf7 ff5 fs7 fc6 sc0 ls0 ws0">double<span class="_"> </span><span class="ffb fc0">y2;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _9"> </span>offset<span class="_ _21"> </span>24</span></span></div><div class="t m0 x27 hd yf8 ff5 fs7 fc6 sc0 ls0 ws0">char<span class="_ _14"> </span><span class="ffb fc0">x3;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _21"> </span>offset<span class="_ _9"> </span>32</span></span></div><div class="t m0 x27 hd yf9 ff5 fs7 fc6 sc0 ls0 ws0">double<span class="_"> </span><span class="ffb fc0">y3;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _9"> </span>offset<span class="_ _21"> </span>40</span></span></div><div class="t m0 x27 hd yfa ff5 fs7 fc6 sc0 ls0 ws0">char<span class="_ _14"> </span><span class="ffb fc0">x4;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _21"> </span>offset<span class="_ _9"> </span>48</span></span></div><div class="t m0 x27 hd yfb ff5 fs7 fc6 sc0 ls0 ws0">double<span class="_"> </span><span class="ffb fc0">y4;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _9"> </span>offset<span class="_ _21"> </span>56</span></span></div><div class="t m0 x27 hd yfc ff5 fs7 fc6 sc0 ls0 ws0">char<span class="_ _14"> </span><span class="ffb fc0">x5;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _21"> </span>offset<span class="_ _9"> </span>64<span class="_ _21"> </span>(65<span class="_ _9"> </span>bytes)</span></span></div><div class="t m0 x1 hd yfd ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x28 hd yf3 ff5 fs7 fc9 sc0 ls0 ws0">struct<span class="_"> </span><span class="fc7">A2<span class="_"> </span><span class="ffb fc0">{<span class="_ _14"> </span><span class="ffa fc5">//<span class="_ _9"> </span>internal<span class="_ _21"> </span>alignment</span></span></span></div><div class="t m0 x29 hd yf4 ff5 fs7 fc6 sc0 ls0 ws0">char<span class="_ _14"> </span><span class="ffb fc0">x1;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _21"> </span>offset<span class="_ _9"> </span>0</span></span></div><div class="t m0 x29 hd yf5 ff5 fs7 fc6 sc0 ls0 ws0">char<span class="_ _14"> </span><span class="ffb fc0">x2;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _21"> </span>offset<span class="_ _9"> </span>1</span></span></div><div class="t m0 x29 hd yf6 ff5 fs7 fc6 sc0 ls0 ws0">char<span class="_ _14"> </span><span class="ffb fc0">x3;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _21"> </span>offset<span class="_ _9"> </span>2</span></span></div><div class="t m0 x29 hd yf7 ff5 fs7 fc6 sc0 ls0 ws0">char<span class="_ _14"> </span><span class="ffb fc0">x4;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _21"> </span>offset<span class="_ _9"> </span>3</span></span></div><div class="t m0 x29 hd yf8 ff5 fs7 fc6 sc0 ls0 ws0">char<span class="_ _14"> </span><span class="ffb fc0">x5;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _21"> </span>offset<span class="_ _9"> </span>4</span></span></div><div class="t m0 x29 hd yf9 ff5 fs7 fc6 sc0 ls0 ws0">double<span class="_"> </span><span class="ffb fc0">y1;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _9"> </span>offset<span class="_ _21"> </span>8</span></span></div><div class="t m0 x29 hd yfa ff5 fs7 fc6 sc0 ls0 ws0">double<span class="_"> </span><span class="ffb fc0">y2;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _9"> </span>offset<span class="_ _21"> </span>16</span></span></div><div class="t m0 x29 hd yfb ff5 fs7 fc6 sc0 ls0 ws0">double<span class="_"> </span><span class="ffb fc0">y3;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _9"> </span>offset<span class="_ _21"> </span>24</span></span></div><div class="t m0 x29 hd yfc ff5 fs7 fc6 sc0 ls0 ws0">double<span class="_"> </span><span class="ffb fc0">y4;<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _9"> </span>offset<span class="_ _21"> </span>32<span class="_ _9"> </span>(40<span class="_ _21"> </span>bytes)</span></span></div><div class="t m0 x28 hd yfd ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x2a hb yfe ff1 fs6 fc0 sc0 ls0 ws0">(1)<span class="_ _6"> </span><span class="ff4">W<span class="_ _3"></span>e<span class="_ _f"> </span>are<span class="_ _c"> </span>w<span class="_ _3"></span>asting<span class="_ _c"> </span>40%<span class="_ _f"> </span>of<span class="_ _c"> </span>memory<span class="_ _c"> </span>fo<span class="_ _3"></span>r<span class="_ _f"> </span>(<span class="_ _26"> </span><span class="ff6">A1<span class="_ _d"> </span></span>)</span></div><div class="t m0 x2a hb yff ff1 fs6 fc0 sc0 ls0 ws0">(2)<span class="_ _6"> </span><span class="ff4">Considering<span class="_ _c"> </span>an<span class="_ _f"> </span><span class="ff9">a<span class="_ _3"></span>rray<span class="_ _c"> </span>of<span class="_ _c"> </span>structures<span class="_ _9"> </span><span class="ff4">(</span>A<span class="_ _3"></span>oS<span class="_ _3c"></span><span class="ff4">)<span class="_ _c"> </span>and<span class="_ _c"> </span>a<span class="_ _f"> </span>cache<span class="_ _c"> </span>line<span class="_ _f"> </span>of<span class="_ _c"> </span>64<span class="_ _f"> </span>bytes<span class="_ _c"> </span>(x64</span></span></span></div><div class="t m0 x6 hb y100 ff4 fs6 fc0 sc0 ls0 ws0">p<span class="_ _3"></span>ro<span class="_ _b"></span>cessors),<span class="_ _c"> </span>every<span class="_ _c"> </span>access<span class="_ _f"> </span>to<span class="_ _10"> </span><span class="ff6">A1<span class="_ _10"> </span></span>involves<span class="_ _c"> </span>tw<span class="_ _3"></span>o<span class="_ _c"> </span>cache<span class="_ _c"> </span>line<span class="_ _f"> </span>op<span class="_ _b"></span>erations<span class="_ _c"> </span>(<span class="fff"><span class="ff1">2x<span class="_ _8"> </span>slow<span class="_ _3"></span>er<span class="ff4">)</span></span></span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">24/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf1c" class="pf w0 h0" data-page-no="1c"><div class="pc pc1c w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">External<span class="_ _1b"> </span>Structure<span class="_ _1b"> </span>Alignment<span class="_ _3d"> </span>1/3</div><div class="t m0 x1 hb y6d ff4 fs6 fc0 sc0 ls0 ws0">In<span class="_ _c"> </span>addiction<span class="_ _c"> </span>to<span class="_ _f"> </span>internal<span class="_ _c"> </span>lay<span class="_ _3"></span>out<span class="_ _c"> </span>problems,<span class="_ _c"> </span>even<span class="_ _c"> </span>the<span class="_ _f"> </span>structure<span class="_ _10"> </span><span class="ff6">A2<span class="_ _10"> </span></span>intro<span class="_ _b"></span>duces<span class="_ _c"> </span>overhead<span class="_ _c"> </span>if</div><div class="t m0 x1 hb ye9 ff4 fs6 fc0 sc0 ls0 ws0">o<span class="_ _3"></span>rganized<span class="_ _c"> </span>in<span class="_ _f"> </span>an<span class="_ _c"> </span>arra<span class="_ _3"></span>y<span class="_ _7"></span>.<span class="_ _21"> </span>Loads<span class="_ _c"> </span>lead<span class="_ _c"> </span>to<span class="_ _c"> </span>one<span class="_ _f"> </span>or<span class="_ _d"> </span>tw<span class="_ _3"></span>o<span class="_ _c"> </span>cache<span class="_ _c"> </span>line<span class="_ _f"> </span>op<span class="_ _b"></span>erations<span class="_ _c"> </span>dep<span class="_ _b"></span>ending<span class="_ _f"> </span>on<span class="_ _c"> </span>the</div><div class="t m0 x1 hb y101 ff4 fs6 fc0 sc0 ls0 ws0">alignment<span class="_ _c"> </span>at<span class="_ _c"> </span>a<span class="_ _f"> </span>sp<span class="_ _b"></span>ecific<span class="_ _f"> </span>index,<span class="_ _c"> </span>e.g.</div><div class="t m0 xf hb y102 ff6 fs6 fc0 sc0 ls0 ws0">index<span class="_"> </span>0<span class="_ _c"> </span><span class="fff">→<span class="_ _c"> </span><span class="ff4">one<span class="_ _f"> </span>cache<span class="_ _c"> </span>line<span class="_ _f"> </span>load</span></span></div><div class="t m0 xf hb y103 ff6 fs6 fc0 sc0 ls0 ws0">index<span class="_"> </span>1<span class="_ _c"> </span><span class="fff">→<span class="_ _c"> </span><span class="ff4">tw<span class="_ _3"></span>o<span class="_ _c"> </span>cache<span class="_ _f"> </span>line<span class="_ _c"> </span>loads</span></span></div><div class="t m0 x1 hb y104 ff4 fs6 fc0 sc0 ls0 ws0">It<span class="_ _c"> </span>is<span class="_ _c"> </span>p<span class="_ _0"></span>ossible<span class="_ _c"> </span>to<span class="_ _c"> </span>fix<span class="_ _c"> </span>the<span class="_ _f"> </span>structure<span class="_ _c"> </span>alignment<span class="_ _f"> </span>in<span class="_ _c"> </span>tw<span class="_ _3"></span>o<span class="_ _c"> </span>wa<span class="_ _3"></span>ys:</div><div class="t m0 xb hb y105 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Memo<span class="_ _3"></span>ry<span class="_ _8"> </span>padding<span class="_ _f"> </span><span class="ff4">refers<span class="_ _c"> </span>to<span class="_ _f"> </span>manually<span class="_ _c"> </span>intro<span class="_ _0"></span>ducing<span class="_ _c"> </span>extra<span class="_ _c"> </span>b<span class="_ _3"></span>ytes<span class="_ _f"> </span>at<span class="_ _c"> </span>the<span class="_ _f"> </span>end<span class="_ _c"> </span>of<span class="_ _f"> </span>the</span></span></div><div class="t m0 x6 hb y106 ff4 fs6 fc0 sc0 ls0 ws0">data<span class="_ _c"> </span>structure<span class="_ _c"> </span>to<span class="_ _f"> </span>enforce<span class="_ _c"> </span>memo<span class="_ _3"></span>ry<span class="_ _c"> </span>alignment.</div><div class="t m0 x6 h6 y107 ff4 fs4 fc0 sc0 ls0 ws0">e.g.<span class="_ _1b"> </span>add<span class="_ _c"> </span>a<span class="_ _12"> </span><span class="ff6">char<span class="_ _12"> </span></span>a<span class="_ _3"></span>rray<span class="_ _d"> </span>of<span class="_ _c"> </span>size<span class="_ _d"> </span>24<span class="_ _c"> </span>to<span class="_ _d"> </span>the<span class="_ _c"> </span>structure<span class="_ _12"> </span><span class="ff6">A2</span></div><div class="t m0 xb hb y108 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Align<span class="_ _8"> </span>k<span class="_ _3"></span>eywo<span class="_ _3"></span>rd<span class="_ _f"> </span>or<span class="_ _f"> </span>attribute<span class="_ _c"> </span><span class="ff4">allows<span class="_ _c"> </span>sp<span class="_ _b"></span>ecifying<span class="_ _c"> </span>the<span class="_ _f"> </span>alignment<span class="_ _c"> </span>requirement<span class="_ _f"> </span>of<span class="_ _c"> </span>a</span></span></div><div class="t m0 x6 hb y109 ff4 fs6 fc0 sc0 ls0 ws0">t<span class="_ _3"></span>yp<span class="_ _b"></span>e<span class="_ _f"> </span>or<span class="_ _c"> </span>an<span class="_ _c"> </span>object<span class="_ _c"> </span>(next<span class="_ _f"> </span>slide)</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">25/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf1d" class="pf w0 h0" data-page-no="1d"><div class="pc pc1d w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">External<span class="_ _1b"> </span>Structure<span class="_ _1b"> </span>Alignment<span class="_ _3d"> </span>2/3</div><div class="t m0 xb hb y10a ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">Explicit<span class="_ _1b"> </span><span class="ff4">alignment/padding<span class="_ _f"> </span>for<span class="_ _c"> </span><span class="ff1">va<span class="_ _3"></span>riable<span class="_ _8"> </span>/<span class="_ _8"> </span>struct<span class="_ _8"> </span>decla<span class="_ _3"></span>ration<span class="_ _f"> </span><span class="fff">→<span class="_ _c"> </span><span class="ff4">affects</span></span></span></span></span></div><div class="t m0 xc h11 y10b ff6 fs6 fc0 sc0 ls0 ws0">sizeof(T)</div><div class="t m0 x2b hb y10c ff4 fs6 fcd sc0 ls0 ws0">C++11<span class="_"> </span><span class="fc0">:<span class="_ _4"> </span><span class="ff6">alignas(N)</span></span></div><div class="t m0 x2c hb y10d ff4 fs6 fc0 sc0 ls0 ws0">GCC/Clang<span class="_"> </span>:<span class="_ _4"> </span><span class="ff6">__attribute__((aligned(N)))</span></div><div class="t m0 x19 hb y10e ff4 fs6 fc0 sc0 ls0 ws0">MSV<span class="_ _3"></span>C<span class="_"> </span>:<span class="_ _4"> </span><span class="ff6">__declspec(align(N))</span></div><div class="t m0 xb hb y10f ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">Explicit<span class="_ _1b"> </span><span class="ff4">alignment<span class="_ _f"> </span>for<span class="_ _c"> </span><span class="ff1">p<span class="_ _b"></span>ointers</span></span></span></div><div class="t m0 x2b hb y110 ff4 fs6 fcd sc0 ls0 ws0">C++20<span class="_"> </span><span class="fc0">:<span class="_ _4"> </span><span class="ff6">std::assume_aligned&lt;N&gt;(ptr)<span class="_ _10"> </span></span>(<span class="_ _26"> </span><span class="ff6">&lt;memory&gt;<span class="_ _d"> </span></span>)</span></div><div class="t m0 x2b hb y111 ff4 fs6 fcd sc0 ls0 ws0">C++17<span class="_"> </span><span class="fc0">:<span class="_ _21"> </span>aligned<span class="_ _10"> </span><span class="ff6">new<span class="_ _10"> </span></span>o<span class="_ _3"></span>r<span class="_ _10"> </span><span class="ff6">std::aligned_alloc(align,<span class="_"> </span>size)</span></span></div><div class="t m0 x2c hb y112 ff4 fs6 fc0 sc0 ls0 ws0">GCC/Clang<span class="_"> </span>:<span class="_ _4"> </span><span class="ff6">__builtin_assume_aligned(ptr,<span class="_"> </span>N)</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">26/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf1e" class="pf w0 h0" data-page-no="1e"><div class="pc pc1e w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIeElEQVR42u3YsQkCMRiG4UQuWB3OIFZOIGItuJlLOI6FQ7iB1XGVaWInVoI2/ifPM0H40rz8ebXZJQAACON6Oc+sAABANCIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAICnXGu1AgAAcZRSXFIBAAhHpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAMCHugm9dRxHHwYA8J2+7yf0WpdUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEqgkAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUEwAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQCAt3Kt1QoAAMRRSnFJBQAgHJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAAH+mG45LK8Cr2/5kBAD4ofX2kPNi3oZ7Sq01gwAAEMIDcKgaAo7T4AQAAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">External<span class="_ _1b"> </span>Structure<span class="_ _1b"> </span>Alignment<span class="_ _3d"> </span>3/3</div><div class="t m0 x1 hf y113 ff5 fs5 fc9 sc0 ls0 ws0">struct<span class="_"> </span><span class="fc7">alignas<span class="ffc fc0">(<span class="fc8">16</span>)<span class="_ _8"> </span>S1<span class="_ _1b"> </span>{<span class="_ _1b"> </span><span class="ffa fc5">//<span class="_ _8"> </span>C++11</span></span></span></div><div class="t m0 xf hf y114 ff5 fs5 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffc fc0">x,<span class="_ _8"> </span>y;</span></div><div class="t m0 x1 hf y115 ffc fs5 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 hf y116 ff5 fs5 fc9 sc0 ls0 ws0">struct<span class="_"> </span><span class="fc7">__attribute__<span class="ffc fc0">((aligned(<span class="fc8">16</span>)))<span class="_ _8"> </span>S2<span class="_ _1b"> </span>{<span class="_ _1b"> </span><span class="ffa fc5">//<span class="_ _8"> </span>compiler-specific<span class="_ _1b"> </span>attribute</span></span></span></div><div class="t m0 xf hf y117 ff5 fs5 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffc fc0">x,<span class="_ _8"> </span>y;</span></div><div class="t m0 x1 hf y118 ffc fs5 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 hf y119 ff5 fs5 fc9 sc0 ls0 ws0">constexpr<span class="_"> </span>auto<span class="_"> </span><span class="ffc fc0">DefaultAlilgn<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span></span>__STDCPP_DEFAULT_NEW_ALIGNMENT__;</span></div><div class="t m0 x1 hf y11a ffc fs5 fc0 sc0 ls0 ws0">S1<span class="_ _8"> </span>s;<span class="_ _1d"> </span><span class="ffa fc5">//<span class="_ _1b"> </span>16B<span class="_ _8"> </span>alignment</span></div><div class="t m0 x1 hf y11b ff5 fs5 fc9 sc0 ls0 ws0">alignas<span class="ffc fc0">(<span class="fc8">16</span>)<span class="_ _8"> </span></span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">var[<span class="fc8">3</span>];<span class="_ _1b"> </span><span class="ffa fc5">//<span class="_ _1b"> </span>16B<span class="_ _8"> </span>alignment</span></span></span></div><div class="t m0 x1 hf y11c ff5 fs5 fc9 sc0 ls0 ws0">auto<span class="_"> </span><span class="ffc fc0">ptr1<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span></span>new<span class="_"> </span><span class="ffc fc0">S1[<span class="fc8">10</span>];<span class="_ _1b"> </span><span class="ffa fc5">//<span class="_ _8"> </span>Warning!<span class="_ _1b"> </span>no<span class="_ _8"> </span>aligment<span class="_ _1b"> </span>guarantee</span></span></div><div class="t m0 x1 hf y11d ff5 fs5 fc9 sc0 ls0 ws0">auto<span class="_"> </span><span class="ffc fc0">ptr2<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span></span>new<span class="_"> </span><span class="fc6">int<span class="ffc fc0">[<span class="fc8">100</span>];<span class="_ _3e"> </span><span class="ffa fc5">//<span class="_ _8"> </span>alignment:<span class="_ _1b"> </span>max(4B,<span class="_ _8"> </span>DefaultAlilgn)</span></span></span></div><div class="t m0 x1 hf y11e ff5 fs5 fc9 sc0 ls0 ws0">auto<span class="_"> </span><span class="ffc fc0">ptr3<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>std<span class="fc8">::</span>aligned_alloc(<span class="fc8">8</span>,<span class="_ _1b"> </span><span class="fc8">4</span>);<span class="_ _3f"> </span><span class="ffa fc5">//<span class="_ _8"> </span>C++17,<span class="_ _1b"> </span>alignment:<span class="_ _8"> </span>max(8B,<span class="_ _1b"> </span>DefaultAlilgn)</span></span></div><div class="t m0 x1 hf y11f ff5 fs5 fc9 sc0 ls0 ws0">auto<span class="_"> </span><span class="ffc fc0">ptr4<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>__builtin_assume_aligned(ptr2,<span class="_ _1b"> </span><span class="fc8">16</span>);<span class="_ _8"> </span><span class="ffa fc5">//<span class="_ _1b"> </span>compiler-specific<span class="_ _8"> </span>attribute</span></span></div><div class="t m0 x1 hf y120 ff5 fs5 fc9 sc0 ls0 ws0">auto<span class="_"> </span><span class="ffc fc0">ptr5<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>std<span class="fc8">::</span>assume_aligned<span class="fc8">&lt;16&gt;</span>(ptr2);<span class="_ _40"> </span><span class="ffa fc5">//<span class="_ _8"> </span>C++20</span></span></div><div class="t m0 x1 hf y121 ff5 fs5 fc9 sc0 ls0 ws0">auto<span class="_"> </span><span class="ffc fc0">ptr<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span></span>new<span class="_"> </span><span class="ffc fc0">(</span>sizeof<span class="ffc fc0">(</span><span class="fc6">int<span class="ffc fc0">),<span class="_ _1b"> </span>std<span class="fc8">::</span>align_val_t{<span class="fc8">8</span>});<span class="_ _1b"> </span><span class="ffa fc5">//<span class="_ _8"> </span>C++17,<span class="_ _1b"> </span>max(8B,<span class="_ _8"> </span>DefaultAlilgn)</span></span></span></div><div class="t m0 x1 hf y122 ffc fs5 fc8 sc0 ls0 ws0">::<span class="ff5 fc9">operator<span class="_"> </span></span><span class="fc7">delete<span class="_ _8"> </span><span class="fc0">(ptr,<span class="_ _1b"> </span>std</span></span>::<span class="fc0">align_val_t{</span>8<span class="fc0">});</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">27/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf1f" class="pf w0 h0" data-page-no="1f"><div class="pc pc1f w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _1b"> </span>Prefetch</div><div class="t m0 x1a hb y6d ff6 fs6 fc0 sc0 ls0 ws0">__builtin_prefetch<span class="_ _10"> </span><span class="ff4">is<span class="_ _c"> </span>used<span class="_ _c"> </span>to<span class="_ _f"> </span><span class="ff9">minimize<span class="_ _c"> </span>cache-miss<span class="_ _f"> </span>latency<span class="_ _21"> </span></span>b<span class="_ _3"></span>y<span class="_ _f"> </span>moving<span class="_ _c"> </span>data<span class="_ _f"> </span>into<span class="_ _c"> </span>a</span></div><div class="t m0 x1 hb ye9 ff4 fs6 fc0 sc0 ls0 ws0">cache<span class="_ _c"> </span>b<span class="_ _b"></span>efore<span class="_ _c"> </span>it<span class="_ _c"> </span>is<span class="_ _c"> </span>accessed.<span class="_ _21"> </span>It<span class="_ _f"> </span>can<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _f"> </span>used<span class="_ _c"> </span>not<span class="_ _f"> </span>only<span class="_ _c"> </span>for<span class="_ _c"> </span>imp<span class="_ _3"></span>roving<span class="_ _f"> </span><span class="ff9">spatial<span class="_ _c"> </span>lo<span class="_ _b"></span>cality</span>,<span class="_ _c"> </span>but</div><div class="t m0 x1 hb y101 ff4 fs6 fc0 sc0 ls0 ws0">also<span class="_ _c"> </span><span class="ff9">temp<span class="_ _b"></span>oral<span class="_ _c"> </span>lo<span class="_ _b"></span>calit<span class="_ _3"></span>y</span></div><div class="t m0 x1 hd y123 ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>size;<span class="_ _9"> </span>i<span class="fc8">++</span>)<span class="_ _21"> </span>{</span></span></div><div class="t m0 xd hd y124 ff5 fs7 fc9 sc0 ls0 ws0">auto<span class="_"> </span><span class="ffb fc0">data<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>array[i];</span></div><div class="t m0 xd hd y125 ffb fs7 fc0 sc0 ls0 ws0">__builtin_prefetch(array<span class="_ _9"> </span><span class="fc8">+<span class="_ _9"> </span></span>i<span class="_ _21"> </span><span class="fc8">+<span class="_ _9"> </span>1</span>,<span class="_ _21"> </span><span class="fc8">0</span>,<span class="_ _9"> </span><span class="fc8">1</span>);<span class="_ _21"> </span><span class="ffa fc5">//<span class="_ _9"> </span>2nd<span class="_ _9"> </span>argument,<span class="_ _21"> </span><span class="ff14">&apos;</span>0<span class="ff14">&apos;<span class="_ _9"> </span></span>means<span class="_ _21"> </span>read-only</span></div><div class="t m0 x2d hd y126 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>3th<span class="_ _9"> </span>argument,<span class="_ _21"> </span><span class="ff14">&apos;</span>1<span class="ff14">&apos;<span class="_ _9"> </span></span>means</div><div class="t m0 x2d hd y127 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>temporal<span class="_ _9"> </span>locality=1,<span class="_ _21"> </span>default=3</div><div class="t m0 xd hd y128 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>do<span class="_ _9"> </span>some<span class="_ _21"> </span>computation<span class="_ _9"> </span>on<span class="_ _21"> </span><span class="ff14">&apos;</span>data<span class="ff14">&apos;</span>,<span class="_ _9"> </span>e.g.<span class="_ _21"> </span>CRC</div><div class="t m0 x1 hd y129 ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hb y12a ff4 fs6 fc0 sc0 ls0 ws0">Alternatively<span class="_ _7"></span>,<span class="_ _10"> </span><span class="ff6">-fprefetch-loop-arrays<span class="_ _10"> </span></span>can<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _f"> </span>used<span class="_ _c"> </span>to<span class="_ _c"> </span>emit<span class="_ _f"> </span>prefetching</div><div class="t m0 x1 hb y12b ff4 fs6 fc0 sc0 ls0 ws0">instructions</div><div class="t m0 xb hd y12c ffb fs7 fcc sc0 ls0 ws0">The<span class="_ _9"> </span>pros<span class="_ _9"> </span>and<span class="_ _21"> </span>cons<span class="_ _9"> </span>of<span class="_ _21"> </span>explicit<span class="_ _9"> </span>software<span class="_ _21"> </span>prefetching</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">28/93</div><a class="l" href="https://johnnysswlab.com/the-pros-and-cons-of-explicit-software-prefetching/"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:3.633000px;width:237.360000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf20" class="pf w0 h0" data-page-no="20"><div class="pc pc20 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIf0lEQVR42u3ZrQ0CMQCG4ZZcg2QGgmICQtAktwKCeViCDRDMQIJgCDZAneKoKQ7Pj+iF55mg+WretHG2WAUAAKjG9XIeWQEAgNqIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAXmLO2QoAANQjpeQlFQCA6ohUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEqgkAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUEwAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIA8G+aoRz03vftZuvCYFhOx4MRAPhAzDlbAQCAeqSUfPcDAFAdkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAAPCGpttNrQC/clvvjQAAX5ov2xgn49I9QiilGAQAgCo8AWeJHQIdT6l0AAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Multi-Threading<span class="_ _1b"> </span>and<span class="_ _1b"> </span>Caches</div><div class="t m0 x1 hb y12d ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _c"> </span><span class="ff1">CPU/threads<span class="_ _8"> </span>affinit<span class="_ _3"></span>y<span class="_ _f"> </span><span class="ff4">controls<span class="_ _c"> </span>how<span class="_ _c"> </span>a<span class="_ _c"> </span>process<span class="_ _f"> </span>is<span class="_ _c"> </span>mapp<span class="_ _b"></span>ed<span class="_ _f"> </span>and<span class="_ _c"> </span>executed<span class="_ _f"> </span>over</span></span></div><div class="t m0 x1 hb y12e ff4 fs6 fc0 sc0 ls0 ws0">multiple<span class="_ _c"> </span>cores<span class="_ _c"> </span>(including<span class="_ _c"> </span>so<span class="_ _b"></span>ckets).<span class="_ _9"> </span>It<span class="_ _c"> </span>affects<span class="_ _f"> </span>the<span class="_ _c"> </span>process<span class="_ _f"> </span>p<span class="_ _b"></span>erfo<span class="_ _3"></span>rmance<span class="_ _f"> </span>due<span class="_ _c"> </span>to</div><div class="t m0 x1 hb y12f ff4 fs6 fc0 sc0 ls0 ws0">co<span class="_ _3"></span>re-to-core<span class="_ _c"> </span>communication<span class="_ _c"> </span>and<span class="_ _c"> </span>cache<span class="_ _f"> </span>line<span class="_ _c"> </span>invalidation<span class="_ _f"> </span>overhead</div><div class="t m0 x1 hb y130 ff4 fs6 fc0 sc0 ls0 ws0">Maximizing<span class="_ _c"> </span>threads<span class="_ _c"> </span><span class="ff9">“clustering”<span class="_ _9"> </span></span>on<span class="_ _f"> </span>a<span class="_ _c"> </span>single<span class="_ _f"> </span>co<span class="_ _3"></span>re<span class="_ _f"> </span>can<span class="_ _c"> </span>p<span class="_ _b"></span>otentially<span class="_ _f"> </span>lead<span class="_ _c"> </span>to<span class="_ _f"> </span>higher<span class="_ _c"> </span>cache</div><div class="t m0 x1 hb y131 ff4 fs6 fc0 sc0 ls0 ws0">hits<span class="_ _c"> </span>rate<span class="_ _c"> </span>and<span class="_ _f"> </span>faster<span class="_ _c"> </span>communication.<span class="_ _21"> </span>On<span class="_ _f"> </span>the<span class="_ _c"> </span>other<span class="_ _f"> </span>hand,<span class="_ _c"> </span>if<span class="_ _f"> </span>the<span class="_ _c"> </span>threads<span class="_ _f"> </span>w<span class="_ _3"></span>ork</div><div class="t m0 x1 hb y132 ff4 fs6 fc0 sc0 ls0 ws0">indep<span class="_ _b"></span>endently/almost<span class="_ _c"> </span>indep<span class="_ _b"></span>endently<span class="_ _7"></span>,<span class="_ _f"> </span>namely<span class="_ _c"> </span>they<span class="_ _f"> </span>show<span class="_ _c"> </span>high<span class="_ _c"> </span>lo<span class="_ _b"></span>cality<span class="_ _c"> </span>on<span class="_ _c"> </span>their<span class="_ _c"> </span>wo<span class="_ _3"></span>rking</div><div class="t m0 x1 hb y133 ff4 fs6 fc0 sc0 ls0 ws0">set,<span class="_ _c"> </span>mapping<span class="_ _c"> </span>them<span class="_ _f"> </span>to<span class="_ _c"> </span>different<span class="_ _f"> </span>cores<span class="_ _c"> </span>can<span class="_ _c"> </span>imp<span class="_ _3"></span>rove<span class="_ _f"> </span>the<span class="_ _c"> </span>p<span class="_ _b"></span>erformance</div><div class="t m0 xb hd y134 ffb fs7 fcc sc0 ls0 ws0">C++11<span class="_ _9"> </span>threads,<span class="_ _9"> </span>affinity<span class="_ _21"> </span>and<span class="_ _9"> </span>hyper-threading</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">29/93</div><a class="l" href="https://eli.thegreenplace.net/2016/c11-threads-affinity-and-hyperthreading/"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:7.982000px;width:204.409000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf21" class="pf w0 h0" data-page-no="21"><div class="pc pc21 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x8 h2 y135 ff1 fs0 fc0 sc0 ls0 ws0">Arithmetic<span class="_ _1"> </span>T<span class="_ _41"></span>yp<span class="_ _0"></span>es</div><a class="l" href="#pf21" data-dest-detail='[33,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:132.432000px;width:197.451000px;height:24.026000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf22" class="pf w0 h0" data-page-no="22"><div class="pc pc22 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAInElEQVR42u3ZMUoDURSG0XlhLlZD1iBWrkDEOpAtWGQ92YQ7SOEaBIsswh1YhSmMt5l0YicJqHfgnBU8/jfFx5t2c/fQAQBAGW/714UVAACoRqQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAPClZaYVAACoIyK8pAIAUI5IBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApJoAAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAOapNwHw28ZxLHKSYRhcBz5pmAUvqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQDgf7XMtAIAAHVEhJdUAADKEakAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAA3/RzOejH8bh+3LgwmJeX550RALhAy0wrAABQR0T43Q8AQDkiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAA4S3/YXlsB/sb76skIAPCj2/t1a8ur6fDZddM0GQQAgBJOLOwmAMrT474AAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Ha<span class="_ _3"></span>rdw<span class="_ _3"></span>are<span class="_ _8"> </span>Notes</div><div class="t m0 xb hb y136 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Instruction<span class="_ _c"> </span>throughput<span class="_ _f"> </span>greatly<span class="_ _c"> </span>dep<span class="_ _b"></span>ends<span class="_ _f"> </span>on<span class="_ _c"> </span>processor<span class="_ _c"> </span>mo<span class="_ _b"></span>del<span class="_ _c"> </span>and<span class="_ _f"> </span>cha<span class="_ _3"></span>racteristics,</span></div><div class="t m0 x6 h6 y137 ff4 fs4 fc0 sc0 ls0 ws0">e.g.,<span class="_ _d"> </span>there<span class="_ _c"> </span>is<span class="_ _d"> </span>no<span class="_ _c"> </span>ha<span class="_ _3"></span>rdwa<span class="_ _3"></span>re<span class="_ _c"> </span>support<span class="_ _d"> </span>for<span class="_ _d"> </span>integer<span class="_ _d"> </span>division<span class="_ _c"> </span>on<span class="_ _d"> </span>GPUs.<span class="_ _9"> </span>This<span class="_ _c"> </span>operation<span class="_ _c"> </span>is</div><div class="t m0 x6 h6 y138 ff4 fs4 fc0 sc0 ls0 ws0">translated<span class="_ _d"> </span>to<span class="_ _10"> </span>100<span class="_ _c"> </span>instructions<span class="_ _d"> </span>for<span class="_ _d"> </span>64-bit<span class="_ _c"> </span>operands</div><div class="t m0 xb hb y139 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Mo<span class="_ _b"></span>dern<span class="_ _c"> </span>processors<span class="_ _c"> </span>p<span class="_ _3"></span>rovide<span class="_ _f"> </span>sepa<span class="_ _3"></span>rated<span class="_ _f"> </span>units<span class="_ _c"> </span>for<span class="_ _c"> </span>floating-p<span class="_ _b"></span>oint<span class="_ _c"> </span>computation<span class="_ _f"> </span>(<span class="ff6">FPU</span>)</span></div><div class="t m0 xb hb y13a ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">A<span class="_ _3"></span>ddition<span class="ff4">,<span class="_ _f"> </span></span>subtraction<span class="ff4">,<span class="_ _c"> </span>and<span class="_ _f"> </span></span>bitwise<span class="_ _c"> </span>operations<span class="_ _9"> </span><span class="ff4">are<span class="_ _c"> </span>computed<span class="_ _c"> </span>b<span class="_ _3"></span>y<span class="_ _f"> </span>the<span class="_ _c"> </span><span class="ff6">ALU</span>,<span class="_ _f"> </span>and<span class="_ _c"> </span>they</span></span></div><div class="t m0 x6 hb y13b ff4 fs6 fc0 sc0 ls0 ws0">have<span class="_ _c"> </span>very<span class="_ _c"> </span>similar<span class="_ _c"> </span>throughput</div><div class="t m0 xb hb y13c ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">In<span class="_ _c"> </span>mo<span class="_ _b"></span>dern<span class="_ _f"> </span>p<span class="_ _3"></span>ro<span class="_ _b"></span>cessors,<span class="_ _c"> </span><span class="ff9">multiplication<span class="_ _f"> </span></span>and<span class="_ _c"> </span><span class="ff9">addition<span class="_ _8"> </span></span>a<span class="_ _3"></span>re<span class="_ _f"> </span>computed<span class="_ _c"> </span>by<span class="_ _c"> </span>the<span class="_ _c"> </span>same</span></div><div class="t m0 x6 hb y13d ff4 fs6 fc0 sc0 ls0 ws0">ha<span class="_ _3"></span>rdwa<span class="_ _3"></span>re<span class="_ _c"> </span>comp<span class="_ _b"></span>onent<span class="_ _c"> </span>for<span class="_ _c"> </span>decreasing<span class="_ _c"> </span>circuit<span class="_ _c"> </span>area<span class="_ _c"> </span><span class="fff">→<span class="_ _c"> </span></span>multiplication<span class="_ _c"> </span>and<span class="_ _c"> </span>addition<span class="_ _c"> </span>can</div><div class="t m0 x6 hb y13e ff4 fs6 fc0 sc0 ls0 ws0">b<span class="_ _b"></span>e<span class="_ _c"> </span>fused<span class="_ _f"> </span>in<span class="_ _c"> </span>a<span class="_ _f"> </span>single<span class="_ _c"> </span>op<span class="_ _b"></span>eration<span class="_ _10"> </span><span class="ff6">fma<span class="_ _10"> </span></span>(floating-p<span class="_ _b"></span>oint)<span class="_ _c"> </span>and<span class="_ _10"> </span><span class="ff6">mad<span class="_ _10"> </span></span>(integer)</div><div class="t m0 xb hd y13f ffb fs7 fcc sc0 ls0 ws0">uops.info:<span class="_ _20"> </span>Latency,<span class="_ _1b"> </span>Throughput,<span class="_ _21"> </span>and<span class="_ _9"> </span>Port<span class="_ _21"> </span>Usage<span class="_ _9"> </span>Information</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">30/93</div><a class="l" href="https://uops.info/table.html"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:0.335000px;width:279.726000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf23" class="pf w0 h0" data-page-no="23"><div class="pc pc23 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIX0lEQVR42u3YsQnCQBiG4TvJkdIZQionELEW3CxLZJwUGSIbWKX0mrMQsoI/8jwjfNXLl8frPQEAQBjbupysAABANCIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAIBDrrVaAQCAOEopnlQAAMIRqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQTAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqSYAAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEA+B/dPg1WgJ97PWYjAMDX5fbM+dy3/Z1Sa80gAACE8AHFshQEnKSJdwAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Data<span class="_ _1b"> </span>T<span class="_ _7"></span>yp<span class="_ _b"></span>es</div><div class="t m0 xb hb y136 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">32-bit<span class="_ _8"> </span>integral<span class="_ _f"> </span>vs.<span class="_ _6"> </span>floating-p<span class="_ _b"></span>oint<span class="ff4">:<span class="_ _21"> </span>in<span class="_ _f"> </span>general,<span class="_ _c"> </span>integral<span class="_ _f"> </span>t<span class="_ _3"></span>yp<span class="_ _b"></span>es<span class="_ _f"> </span>are<span class="_ _c"> </span>faster,<span class="_ _c"> </span>but<span class="_ _c"> </span>it</span></span></div><div class="t m0 x6 hb y137 ff4 fs6 fc0 sc0 ls0 ws0">dep<span class="_ _b"></span>ends<span class="_ _c"> </span>on<span class="_ _f"> </span>the<span class="_ _c"> </span>processor<span class="_ _c"> </span>cha<span class="_ _3"></span>racteristics</div><div class="t m0 xb hb y140 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">32-bit<span class="_ _8"> </span>t<span class="_ _3"></span>yp<span class="_ _b"></span>es<span class="_ _8"> </span>are<span class="_ _f"> </span>faster<span class="_ _8"> </span>than<span class="_ _f"> </span>64-bit<span class="_ _8"> </span>types</span></div><div class="t m0 x12 h6 y141 ff8 fs4 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">64-bit<span class="_ _d"> </span>integral<span class="_ _d"> </span>types<span class="_ _c"> </span>a<span class="_ _3"></span>re<span class="_ _d"> </span>slightly<span class="_ _c"> </span>slo<span class="_ _3"></span>wer<span class="_ _d"> </span>than<span class="_ _d"> </span>32-bit<span class="_ _d"> </span>integral<span class="_ _d"> </span>types.<span class="_ _9"> </span>Mo<span class="_ _b"></span>dern<span class="_ _d"> </span>processors</span></div><div class="t m0 x1b h6 y142 ff4 fs4 fc0 sc0 ls0 ws0">widely<span class="_ _d"> </span>supp<span class="_ _b"></span>ort<span class="_ _d"> </span>native<span class="_ _c"> </span>64-bit<span class="_ _d"> </span>instructions<span class="_ _c"> </span>fo<span class="_ _3"></span>r<span class="_ _c"> </span>most<span class="_ _d"> </span>op<span class="_ _b"></span>erations,<span class="_ _c"> </span>otherwise<span class="_ _d"> </span>they<span class="_ _c"> </span>require</div><div class="t m0 x1b h6 y143 ff4 fs4 fc0 sc0 ls0 ws0">multiple<span class="_ _d"> </span>op<span class="_ _b"></span>erations</div><div class="t m0 x12 h6 y144 ff8 fs4 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Single<span class="_ _d"> </span>precision<span class="_ _d"> </span>floating-p<span class="_ _b"></span>oints<span class="_ _c"> </span>a<span class="_ _3"></span>re<span class="_ _c"> </span>up<span class="_ _d"> </span>to<span class="_ _c"> </span>three<span class="_ _d"> </span>times<span class="_ _c"> </span>faster<span class="_ _d"> </span>than<span class="_ _c"> </span>double<span class="_ _d"> </span>precision</span></div><div class="t m0 x1b h6 y145 ff4 fs4 fc0 sc0 ls0 ws0">floating-p<span class="_ _b"></span>oints</div><div class="t m0 xb hb y146 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Small<span class="_ _8"> </span>integral<span class="_ _f"> </span>types<span class="_ _8"> </span>are<span class="_ _f"> </span>slo<span class="_ _3"></span>wer<span class="_ _f"> </span>than<span class="_ _8"> </span>32-bit<span class="_ _8"> </span>integer<span class="ff4">,<span class="_ _c"> </span>but<span class="_ _c"> </span>they<span class="_ _f"> </span>require<span class="_ _c"> </span>less</span></span></div><div class="t m0 x6 hb y147 ff4 fs6 fc0 sc0 ls0 ws0">memo<span class="_ _3"></span>ry<span class="_ _f"> </span><span class="fff">→<span class="_ _c"> </span></span>cache/memory<span class="_ _c"> </span>efficiency</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">31/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf24" class="pf w0 h0" data-page-no="24"><div class="pc pc24 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Arithmetic<span class="_ _1b"> </span>Op<span class="_ _b"></span>erations<span class="_ _42"> </span>1/3</div><div class="t m0 xb hb y148 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Arithmetic<span class="_ _c"> </span><span class="ff1">increment/decrement<span class="_ _10"> </span><span class="ff6">x++<span class="_ _d"> </span></span></span>/<span class="_ _26"> </span><span class="ff6">x--<span class="_ _10"> </span></span>has<span class="_ _f"> </span>the<span class="_ _c"> </span>same<span class="_ _f"> </span>p<span class="_ _b"></span>erfo<span class="_ _3"></span>rmance<span class="_ _f"> </span>of</span></div><div class="t m0 xc hb y149 ff6 fs6 fc0 sc0 ls0 ws0">x<span class="_"> </span>+=<span class="_"> </span>1<span class="_ _26"> </span><span class="ff4">/<span class="_ _d"> </span></span>x<span class="_"> </span>-=<span class="_"> </span>1</div><div class="t m0 xb hb y14a ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Arithmetic<span class="_ _c"> </span><span class="ff1">comp<span class="_ _b"></span>ound<span class="_ _8"> </span>op<span class="_ _b"></span>erators<span class="_ _c"> </span></span>(<span class="_ _d"> </span><span class="ff6">a<span class="_"> </span>*=<span class="_"> </span>b<span class="_ _26"> </span></span>)<span class="_ _c"> </span>has<span class="_ _f"> </span>the<span class="_ _c"> </span>same<span class="_ _f"> </span>p<span class="_ _b"></span>erformance<span class="_ _c"> </span>of</span></div><div class="t m0 x6 hb y14b ff4 fs6 fc0 sc0 ls0 ws0">assignment<span class="_ _c"> </span>+<span class="_ _c"> </span>op<span class="_ _0"></span>eration<span class="_ _c"> </span>(<span class="_ _26"> </span><span class="ff6">a<span class="_"> </span>=<span class="_"> </span>a<span class="_"> </span>*<span class="_"> </span>b<span class="_ _d"> </span></span>)<span class="_ _c"> </span><span class="ff1">*</span></div><div class="t m0 xb hb y14c ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Prefer<span class="_ _8"> </span>p<span class="_ _3"></span>refix<span class="_ _8"> </span>increment/decrement<span class="_ _c"> </span><span class="ff4">(<span class="_ _d"> </span><span class="ff6">++var<span class="_ _d"> </span></span>)<span class="_ _c"> </span>instead<span class="_ _c"> </span>of<span class="_ _f"> </span>the<span class="_ _c"> </span>p<span class="_ _b"></span>ostfix<span class="_ _f"> </span>op<span class="_ _b"></span>erator</span></span></div><div class="t m0 x6 hb y14d ff4 fs6 fc0 sc0 ls0 ws0">(<span class="_ _26"> </span><span class="ff6">var++<span class="_ _d"> </span></span>)<span class="_ _c"> </span><span class="ff1">*</span></div><div class="t m0 xb h10 y14e ff1 fs7 fcc sc0 ls0 ws0">*<span class="_ _d"> </span><span class="ffe">the<span class="_ _26"> </span>compiler<span class="_ _d"> </span>automatically<span class="_ _d"> </span>applies<span class="_ _d"> </span>such<span class="_ _d"> </span>optimization<span class="_ _d"> </span>whenever<span class="_ _d"> </span>possible.<span class="_ _8"> </span>This<span class="_ _d"> </span>is<span class="_ _d"> </span>not<span class="_ _d"> </span>ensured<span class="_ _d"> </span>fo<span class="_ _3"></span>r</span></div><div class="t m0 x1 h10 y14f ffe fs7 fcc sc0 ls0 ws0">object<span class="_ _d"> </span>t<span class="_ _3"></span>yp<span class="_ _b"></span>es</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">32/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf25" class="pf w0 h0" data-page-no="25"><div class="pc pc25 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIkklEQVR42u3YsU0DQRCG0Vt0I6IVNVhErsBCxEjujCYoh8BF0IEjayNPcmRUgNDc8l4DK/3a4NO059PrAgAAZXxdPh+sAABANSIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAIAfLTOtAABAHRHhkgoAQDkiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkWoCAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAAfstqAgDmMMYwwn/WezfCTFxSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgDAvrXMtAIAAHVEhEsqAADliFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAESqCQAAEKkAACBSAQAQqQAAIFIBAJjNagKYzBjjbx7qvVubKf+/vw0VuKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAIB9a5lpBQAA6ogIl1QAAMoRqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAgJmtt/eDFWDXrm8fRgBgJseXc2tPj9vtvizbthkEAIASvgHeQiMARPbYowAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Arithmetic<span class="_ _1b"> </span>Op<span class="_ _b"></span>erations<span class="_ _42"> </span>2/3</div><div class="t m0 xb hb y148 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Keep<span class="_ _8"> </span>nea<span class="_ _3"></span>r<span class="_ _8"> </span>constant<span class="_ _8"> </span>values/va<span class="_ _3"></span>riables<span class="_ _f"> </span><span class="fff">→<span class="_ _c"> </span><span class="ff4">the<span class="_ _f"> </span>compiler<span class="_ _c"> </span>can<span class="_ _f"> </span>merge<span class="_ _c"> </span>their<span class="_ _f"> </span>values.</span></span></span></div><div class="t m0 x6 hb y149 ff4 fs6 fc0 sc0 ls0 ws0">Floating-p<span class="_ _b"></span>oint<span class="_ _c"> </span>values<span class="_ _f"> </span>requires<span class="_ _c"> </span>more<span class="_ _c"> </span>attention<span class="_ _c"> </span>due<span class="_ _c"> </span>to<span class="_ _f"> </span>non-asso<span class="_ _b"></span>ciativity</div><div class="t m0 xb hb y14a ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Some<span class="_ _c"> </span>op<span class="_ _b"></span>erations<span class="_ _f"> </span>on<span class="_ _c"> </span><span class="ff5">unsigned<span class="_"> </span>types<span class="_ _f"> </span></span>a<span class="_ _3"></span>re<span class="_ _f"> </span>faster<span class="_ _c"> </span>than<span class="_ _f"> </span>on<span class="_ _c"> </span><span class="ff5">signed<span class="_"> </span>types<span class="_ _f"> </span></span>b<span class="_ _b"></span>ecause</span></div><div class="t m0 x6 hb y14b ff4 fs6 fc0 sc0 ls0 ws0">they<span class="_ _c"> </span>dont<span class="_ _c"> </span>have<span class="_ _f"> </span>to<span class="_ _c"> </span>deal<span class="_ _f"> </span>with<span class="_ _c"> </span>negative<span class="_ _f"> </span>numb<span class="_ _b"></span>ers,<span class="_ _c"> </span>e.g.<span class="_ _a"> </span><span class="ff6">x<span class="_"> </span>/<span class="_"> </span>2<span class="_"> </span><span class="fff">→<span class="_ _2d"> </span></span>x<span class="_"> </span>»<span class="_"> </span>1</span></div><div class="t m0 xb hb y14c ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Some<span class="_ _c"> </span>op<span class="_ _b"></span>erations<span class="_ _f"> </span>on<span class="_ _c"> </span><span class="ff5">signed<span class="_"> </span>types<span class="_ _f"> </span></span>a<span class="_ _3"></span>re<span class="_ _f"> </span>faster<span class="_ _c"> </span>than<span class="_ _f"> </span>on<span class="_ _c"> </span><span class="ff5">unsigned<span class="_"> </span>types<span class="_ _f"> </span></span>b<span class="_ _b"></span>ecause</span></div><div class="t m0 x6 hb y14d ff4 fs6 fc0 sc0 ls0 ws0">they<span class="_ _c"> </span>can<span class="_ _c"> </span>exploit<span class="_ _f"> </span><span class="ff9">undefined<span class="_ _c"> </span>b<span class="_ _0"></span>ehavio<span class="_ _3"></span>r<span class="ff4">,<span class="_ _c"> </span>see<span class="_ _c"> </span>next<span class="_ _f"> </span>slide</span></span></div><div class="t m0 xb hb y150 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _f"> </span><span class="ff1">logic<span class="_ _8"> </span>op<span class="_ _b"></span>erations<span class="_ _10"> </span><span class="ff6">||<span class="_ _10"> </span></span></span>to<span class="_ _c"> </span><span class="ff1">bitwise<span class="_ _f"> </span>op<span class="_ _b"></span>erations<span class="_ _10"> </span><span class="ff6">|<span class="_ _10"> </span></span></span>to<span class="_ _c"> </span>take<span class="_ _c"> </span>advantage<span class="_ _c"> </span>of</span></div><div class="t m0 x6 hb y151 ff4 fs6 fc0 sc0 ls0 ws0">sho<span class="_ _3"></span>rt-circuiting</div><div class="t m0 xb hd y152 ffb fs7 fcc sc0 ls0 ws0"><span class="fce sc0">Is</span><span class="_ _9"> </span><span class="fce sc0">if(A</span><span class="_ _9"> </span><span class="fce sc0">|</span><span class="_ _21"> </span><span class="fce sc0">B)</span><span class="_ _9"> </span><span class="fce sc0">always</span><span class="_ _21"> </span><span class="fce sc0">faster</span><span class="_ _9"> </span><span class="fce sc0">than</span><span class="_ _21"> </span><span class="fce sc0">if(A</span><span class="_ _9"> </span><span class="fce sc0">||</span><span class="_ _9"> </span><span class="fce sc0">B)?</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">33/93</div><a class="l" href="https://stackoverflow.com/questions/71039947/is-ifa-b-always-faster-than-ifa-b"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:-61.921000px;width:204.409000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf26" class="pf w0 h0" data-page-no="26"><div class="pc pc26 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAInUlEQVR42u3ZsU3DUBSGUT/kKyqLGRAVEyBEjZQVKJiHJbJBisyAlIIh2IAqckG4jekipUMoQdfknAHsp9/Np+d2c/fQAQBAGe9vmwsrAABQjUgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAGCvZaYVAACoIyLcpAIAUI5IBQBApAIAgEgFAECkAgCASAUAQKQCAMCp9X/wjnEcDQ0AcA6GYTjKc9ykAgBQjkgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkmgAAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAABxFy0wrAABQR0S4SQUAoByRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAHOjnctDP3W7x9OyDwby8rldGAOAXWmZaAQCAOiLC734AAMoRqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAAD8WL99ubYC/GMfj0sjADAvt/eL1q4up+1X103TZBAAAEr4Bgg7IwD6fb4XAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Arithmetic<span class="_ _1b"> </span>Op<span class="_ _b"></span>erations<span class="_ _42"> </span>3/3</div><div class="t m0 x2e hd yf3 ff5 fs7 fc6 sc0 ls0 ws0">bool<span class="_"> </span><span class="ffb fc7">mainGuT<span class="fc0">(</span></span>uint32_t<span class="_"> </span><span class="ffb fc0">i1,<span class="_ _9"> </span></span>uint32_t<span class="_"> </span><span class="ffb fc0">i2,<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _21"> </span><span class="ff15">if<span class="_ _9"> </span>i1,<span class="_ _21"> </span>i2<span class="_ _9"> </span>are<span class="_ _21"> </span>int32_t,<span class="_ _9"> </span>the<span class="_ _9"> </span>code</span></span></span></div><div class="t m0 x2f hd yf4 ff5 fs7 fc6 sc0 ls0 ws0">uint8_t<span class="_"> </span><span class="ffb fc8">*<span class="fc0">block)<span class="_ _9"> </span>{<span class="_ _43"> </span><span class="ffa fc5">//<span class="_ _9"> </span><span class="ff15">uses<span class="_ _9"> </span>half<span class="_ _21"> </span>of<span class="_ _9"> </span>the<span class="_ _21"> </span>instructions!!</span></span></span></span></div><div class="t m0 x5 hd yf5 ff5 fs7 fc6 sc0 ls0 ws0">uint8_t<span class="_"> </span><span class="ffb fc0">c1,<span class="_ _9"> </span>c2;</span></div><div class="t m0 x5 hd yf6 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>1<span class="_ _44"> </span>//<span class="_ _9"> </span><span class="ff15">why?<span class="_ _9"> </span></span>if<span class="_ _21"> </span><span class="ff15">i1,<span class="_ _9"> </span>i2<span class="_ _21"> </span></span>are<span class="_ _9"> </span><span class="ff15">uint32_t<span class="_ _21"> </span></span>the<span class="_ _9"> </span>compiler</div><div class="t m0 x5 hd yf7 ffb fs7 fc0 sc0 ls0 ws0">c1<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>block[i1],<span class="_ _21"> </span>c2<span class="_ _9"> </span><span class="fc8">=<span class="_ _21"> </span></span>block[i2];<span class="_ _45"> </span><span class="ffa fc5">//<span class="_ _9"> </span>must<span class="_ _9"> </span>copy<span class="_ _21"> </span>them<span class="_ _9"> </span>into<span class="_ _21"> </span>32-bit<span class="_ _9"> </span>registers<span class="_ _21"> </span>to</span></div><div class="t m0 x5 hd yf8 ff5 fs7 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffb fc0">(c1<span class="_ _9"> </span><span class="fc8">!=<span class="_ _9"> </span></span>c2)<span class="_ _21"> </span></span>return<span class="_"> </span><span class="ffb fc0">(c1<span class="_ _9"> </span><span class="fc8">&gt;<span class="_ _21"> </span></span>c2);<span class="_ _45"> </span><span class="ffa fc5">//<span class="_ _9"> </span>ensure<span class="_ _9"> </span>wrap-around<span class="_ _21"> </span>behavior<span class="_ _9"> </span>before<span class="_ _21"> </span>passing</span></span></div><div class="t m0 x5 hd yf9 ffb fs7 fc0 sc0 ls0 ws0">i1<span class="fc8">++</span>,<span class="_ _9"> </span>i2<span class="fc8">++</span>;<span class="_ _46"> </span><span class="ffa fc5">//<span class="_ _9"> </span>them<span class="_ _9"> </span>to<span class="_ _21"> </span>the<span class="_ _9"> </span>subscript<span class="_ _21"> </span>operator<span class="_ _9"> </span>(size_t)</span></div><div class="t m0 x5 hd yfb ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>2<span class="_ _44"> </span>//<span class="_ _9"> </span><span class="ff15">On<span class="_ _9"> </span>the<span class="_ _21"> </span>other<span class="_ _9"> </span>hand,<span class="_ _21"> </span>int32_t<span class="_ _9"> </span>overflow<span class="_ _21"> </span>is</span></div><div class="t m0 x5 hd yfc ffb fs7 fc0 sc0 ls0 ws0">c1<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>block[i1],<span class="_ _21"> </span>c2<span class="_ _9"> </span><span class="fc8">=<span class="_ _21"> </span></span>block[i2];<span class="_ _45"> </span><span class="ffa fc5">//<span class="_ _9"> </span><span class="ff15">undefined<span class="_ _9"> </span>behavior<span class="_ _21"> </span>and<span class="_ _9"> </span>the<span class="_ _21"> </span>compiler<span class="_ _9"> </span>can</span></span></div><div class="t m0 x5 hd yfd ff5 fs7 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffb fc0">(c1<span class="_ _9"> </span><span class="fc8">!=<span class="_ _9"> </span></span>c2)<span class="_ _21"> </span></span>return<span class="_"> </span><span class="ffb fc0">(c1<span class="_ _9"> </span><span class="fc8">&gt;<span class="_ _21"> </span></span>c2);<span class="_ _45"> </span><span class="ffa fc5">//<span class="_ _9"> </span><span class="ff15">assume<span class="_ _9"> </span>it<span class="_ _21"> </span>never<span class="_ _9"> </span>happens</span></span></span></div><div class="t m0 x5 hd y153 ffb fs7 fc0 sc0 ls0 ws0">i1<span class="fc8">++</span>,<span class="_ _9"> </span>i2<span class="fc8">++</span>;</div><div class="t m0 x5 hd y154 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>...<span class="_ _9"> </span>continue<span class="_ _21"> </span>repeating<span class="_ _9"> </span>the<span class="_ _3b"> </span>//<span class="_ _9"> </span>the<span class="_ _21"> </span>code<span class="_ _9"> </span>is<span class="_ _9"> </span>also<span class="_ _21"> </span>optimal<span class="_ _9"> </span>with<span class="_ _21"> </span><span class="ff15">size_t<span class="_ _9"> </span></span>on<span class="_ _21"> </span>64-bit</div><div class="t m0 x2e hd y155 ffb fs7 fc0 sc0 ls0 ws0">}<span class="_ _14"> </span><span class="ffa fc5">//<span class="_ _47"> </span>code<span class="_ _9"> </span>multiple<span class="_ _9"> </span>times<span class="_ _43"> </span>//<span class="_ _9"> </span>arch<span class="_ _21"> </span>because<span class="_ _9"> </span><span class="ff15">block<span class="_ _21"> </span></span>cannot<span class="_ _9"> </span>be<span class="_ _21"> </span>larger<span class="_ _9"> </span>than<span class="_ _9"> </span>it</span></div><div class="t m0 xb hd y156 ffb fs7 fcc sc0 ls0 ws0">Garbage<span class="_ _9"> </span>In,<span class="_ _9"> </span>Garbage<span class="_ _21"> </span>Out:<span class="_ _20"> </span>Arguing<span class="_ _9"> </span>about<span class="_ _9"> </span>Undefined<span class="_ _21"> </span>Behavior<span class="_ _9"> </span>with<span class="_ _9"> </span>Nasal<span class="_ _21"> </span>Daemons,</div><div class="t m0 x30 hd y157 ffb fs7 fcc sc0 ls0 ws0">Chandler<span class="_ _9"> </span>Carruth,<span class="_ _9"> </span>CppCon<span class="_ _21"> </span>2016</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">34/93</div><a class="l" href="https://www.youtube.com/watch?v=yG1OZ69H_-o"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:17.725000px;width:391.471000px;height:11.657000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://www.youtube.com/watch?v=yG1OZ69H_-o"><div class="d m1" style="border-style:none;position:absolute;left:27.350000px;bottom:3.334000px;width:148.468000px;height:11.154000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf27" class="pf w0 h0" data-page-no="27"><div class="pc pc27 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIdUlEQVR42u3YsQ3CMBRFURvFooqYAVExAULUSNmMJRiHgiHYgCpKhRvTpYfqRzlnAuu5ufr5cLokAAAI4/V8bKwAAEA0IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAgFmutVoBAIA4SikuqQAAhCNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAACYdQt66zRNPgwA4D993y/otS6pAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVBMAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAFYg11qtAABAHKUUl1QAAMIRqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAAPCjbrztrQDr9L7ejQBAQMfzkPNu28ZPSq01gwAAEMIX8Z0aAm0xLAkAAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Arithmetic<span class="_ _1b"> </span>Op<span class="_ _b"></span>erations<span class="_ _1b"> </span>-<span class="_ _9"> </span>Integer<span class="_ _1b"> </span>Multiplication</div><div class="t m0 x1 hb y6d ff4 fs6 fc0 sc0 ls0 ws0">Integer<span class="_ _c"> </span>multiplication<span class="_ _c"> </span>requires<span class="_ _f"> </span>double<span class="_ _c"> </span>the<span class="_ _f"> </span>numb<span class="_ _b"></span>er<span class="_ _c"> </span>of<span class="_ _f"> </span>bits<span class="_ _c"> </span>of<span class="_ _f"> </span>the<span class="_ _c"> </span>op<span class="_ _0"></span>erands</div><div class="t m0 x1 hd y158 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span><span class="ff15">32-bit<span class="_ _9"> </span>platforms</span></div><div class="t m0 x1 hd y159 ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffb fc7">f1<span class="fc0">(</span></span>int<span class="_"> </span><span class="ffb fc0">x,<span class="_ _9"> </span></span>int<span class="_"> </span><span class="ffb fc0">y)<span class="_ _9"> </span>{</span></div><div class="t m0 xd hd y15a ff5 fs7 fc9 sc0 ls0 ws0">return<span class="_"> </span><span class="ffb fc0">x<span class="_ _9"> </span><span class="fc8">*<span class="_ _9"> </span></span>y;<span class="_ _48"> </span><span class="ffa fc5">//<span class="_ _9"> </span>efficient,<span class="_ _9"> </span>everything<span class="_ _21"> </span>is<span class="_ _9"> </span>32-bit</span></span></div><div class="t m0 x1 hd y15b ffb fs7 fc0 sc0 ls0 ws0">}<span class="_ _49"> </span><span class="ffa fc5">//<span class="_ _9"> </span>can<span class="_ _9"> </span>overflow</span></div><div class="t m0 x1 hd y15c ff5 fs7 fc6 sc0 ls0 ws0">int64_t<span class="_"> </span><span class="ffb fc7">f2<span class="fc0">(</span></span>int64_t<span class="_"> </span><span class="ffb fc0">x,<span class="_ _9"> </span></span>int64_t<span class="_"> </span><span class="ffb fc0">y)<span class="_ _9"> </span>{<span class="_ _3b"> </span><span class="ffa fc5">//<span class="_ _9"> </span>not<span class="_ _21"> </span>efficient,<span class="_ _9"> </span>the<span class="_ _21"> </span>compiler<span class="_ _9"> </span>emulated</span></span></div><div class="t m0 xd hd y15d ff5 fs7 fc9 sc0 ls0 ws0">return<span class="_"> </span><span class="ffb fc0">x<span class="_ _9"> </span><span class="fc8">*<span class="_ _9"> </span></span>y;<span class="_ _48"> </span><span class="ffa fc5">//<span class="_ _9"> </span>64-bit<span class="_ _9"> </span>operations<span class="_ _21"> </span>with<span class="_ _9"> </span>32-bit</span></span></div><div class="t m0 x1 hd y15e ffb fs7 fc0 sc0 ls0 ws0">}<span class="_ _49"> </span><span class="ffa fc5">//<span class="_ _9"> </span>instructions</span></div><div class="t m0 x31 hd y15f ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>same<span class="_ _9"> </span>for<span class="_ _21"> </span>f2(int<span class="_ _9"> </span>x,<span class="_ _21"> </span>int64_t<span class="_ _9"> </span>y)</div><div class="t m0 x1 hd y160 ff5 fs7 fc6 sc0 ls0 ws0">int64_t<span class="_"> </span><span class="ffb fc7">f3<span class="fc0">(</span></span>int<span class="_"> </span><span class="ffb fc0">x,<span class="_ _9"> </span></span>int<span class="_"> </span><span class="ffb fc0">y)<span class="_ _9"> </span>{</span></div><div class="t m0 xd hd y161 ff5 fs7 fc9 sc0 ls0 ws0">return<span class="_"> </span><span class="ffb fc0">x<span class="_ _9"> </span><span class="fc8">*<span class="_ _9"> </span></span></span>static_cast<span class="ffb fc8">&lt;</span><span class="fc6">int64_t<span class="ffb fc8">&gt;<span class="fc0">(y);<span class="_ _21"> </span><span class="ffa fc5">//<span class="_ _9"> </span>efficient!!<span class="_ _21"> </span>the<span class="_ _9"> </span>compiler<span class="_ _21"> </span>knows<span class="_ _9"> </span>that</span></span></span></span></div><div class="t m0 x1 hd y162 ffb fs7 fc0 sc0 ls0 ws0">}<span class="_ _49"> </span><span class="ffa fc5">//<span class="_ _9"> </span>the<span class="_ _9"> </span>inputs<span class="_ _21"> </span>are<span class="_ _9"> </span>32-bit<span class="_ _21"> </span>and<span class="_ _9"> </span>the</span></div><div class="t m0 x31 hd y163 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>multiplication<span class="_ _9"> </span>requires<span class="_ _21"> </span>64-bit,</div><div class="t m0 x31 hd y164 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>so<span class="_ _9"> </span>no<span class="_ _21"> </span>emulation<span class="_ _9"> </span>is<span class="_ _21"> </span>needed</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">35/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf28" class="pf w0 h0" data-page-no="28"><div class="pc pc28 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Arithmetic<span class="_ _1b"> </span>Op<span class="_ _b"></span>erations<span class="_ _1b"> </span>-<span class="_ _9"> </span>P<span class="_ _3"></span>ow<span class="_ _3"></span>er-of-T<span class="_ _5"></span>wo<span class="_ _8"> </span>Multiplication/Division/Mo<span class="_ _b"></span>dulo</div><div class="t m0 xb hb y165 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _c"> </span>shift<span class="_ _f"> </span>fo<span class="_ _3"></span>r<span class="_ _f"> </span><span class="ff1">p<span class="_ _0"></span>o<span class="_ _3"></span>w<span class="_ _3"></span>er-of-t<span class="_ _3"></span>wo<span class="_ _f"> </span>multiplications<span class="_ _c"> </span><span class="ff4">(<span class="_ _d"> </span><span class="ff6">a<span class="_"> </span><span class="fff">≪<span class="_ _2d"> </span></span>b<span class="_ _26"> </span></span>)<span class="_ _c"> </span>and<span class="_ _f"> </span></span>divisions</span></span></div><div class="t m0 x6 hb y8e ff4 fs6 fc0 sc0 ls0 ws0">(<span class="_ _26"> </span><span class="ff6">a<span class="_"> </span><span class="fff">≫<span class="_ _2d"> </span></span>b<span class="_ _d"> </span></span>)<span class="_ _c"> </span>only<span class="_ _c"> </span>for<span class="_ _c"> </span>run-time<span class="_ _c"> </span>values<span class="_ _c"> </span><span class="ff1">*</span></div><div class="t m0 xb hb y166 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _c"> </span>bitwise<span class="_ _c"> </span><span class="ff16">and<span class="_ _c"> </span></span>(<span class="_ _d"> </span><span class="ff6">a<span class="_"> </span>%<span class="_"> </span>b<span class="_"> </span><span class="fff">→<span class="_ _2d"> </span></span>a<span class="_"> </span>&amp;<span class="_"> </span>(b<span class="_"> </span>-<span class="_"> </span>1)<span class="_ _26"> </span></span>)<span class="_ _c"> </span>for<span class="_ _c"> </span><span class="ff1">p<span class="_ _b"></span>ow<span class="_ _3"></span>er-of-t<span class="_ _3"></span>w<span class="_ _3"></span>o<span class="_ _8"> </span>mo<span class="_ _b"></span>dulo</span></span></div><div class="t m0 x6 hb y90 ff4 fs6 fc0 sc0 ls0 ws0">op<span class="_ _b"></span>erations<span class="_ _c"> </span>only<span class="_ _f"> </span>fo<span class="_ _3"></span>r<span class="_ _f"> </span>run-time<span class="_ _c"> </span>values<span class="_ _f"> </span><span class="ff1">*</span></div><div class="t m0 xb hb y167 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Constant<span class="_ _8"> </span>multiplication<span class="_ _f"> </span>and<span class="_ _8"> </span>division<span class="_ _f"> </span><span class="ff4">can<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _f"> </span>heavily<span class="_ _c"> </span>optimized<span class="_ _f"> </span>b<span class="_ _3"></span>y<span class="_ _f"> </span>the<span class="_ _c"> </span>compiler,</span></span></div><div class="t m0 x6 hb y168 ff4 fs6 fc0 sc0 ls0 ws0">even<span class="_ _c"> </span>for<span class="_ _c"> </span>non-trivial<span class="_ _c"> </span>values</div><div class="t m0 xb h10 y169 ff1 fs7 fcc sc0 ls0 ws0">*<span class="_ _d"> </span><span class="ffe">the<span class="_ _26"> </span>compiler<span class="_ _d"> </span>automatically<span class="_ _d"> </span>applies<span class="_ _d"> </span>such<span class="_ _d"> </span>optimizations<span class="_ _d"> </span>if<span class="_ _2d"> </span><span class="ffb">b<span class="_ _12"> </span></span>is<span class="_ _26"> </span>known<span class="_ _d"> </span>at<span class="_ _26"> </span>compile-time.<span class="_ _1b"> </span>Bit<span class="_ _3"></span>wise</span></div><div class="t m0 x1 h10 y16a ffe fs7 fcc sc0 ls0 ws0">op<span class="_ _b"></span>erations<span class="_ _d"> </span>mak<span class="_ _3"></span>e<span class="_ _d"> </span>the<span class="_ _d"> </span>co<span class="_ _b"></span>de<span class="_ _d"> </span>ha<span class="_ _3"></span>rder<span class="_ _d"> </span>to<span class="_ _d"> </span>read</div><div class="t m0 x1 hd y16b ffb fs7 fcc sc0 ls0 ws0">Ideal<span class="_ _9"> </span>divisors:<span class="_ _20"> </span>when<span class="_ _9"> </span>a<span class="_ _9"> </span>division<span class="_ _21"> </span>compiles<span class="_ _9"> </span>down<span class="_ _21"> </span>to<span class="_ _9"> </span>just<span class="_ _9"> </span>a<span class="_ _21"> </span>multiplication</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">36/93</div><a class="l" href="https://lemire.me/blog/2021/04/28/ideal-divisors-when-a-division-compiles-down-to-just-a-multiplication/?amp&amp;__twitter_impression=true"><div class="d m1" style="border-style:none;position:absolute;left:27.350000px;bottom:4.240000px;width:336.214000px;height:11.154000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf29" class="pf w0 h0" data-page-no="29"><div class="pc pc29 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIy0lEQVR42u3ZMUoDURSG0TyZi6VrECuL1CJWgQhuwcL1uAl3YOESgsTCHaRxB1apjJcJYyc2ERTEO+GcFcz7X/Mxr52cXUwAAKCMl+enAysAAFCNSAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEA4FPLTCsAAFBHRPiTCgBAOSIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACMW7eXp+r77XQ2d7sAQGWr5cIIu7TMtAIAAHVEhOd+AADKEakAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACPS7eWp+n47nc3dLgBQ2Wq5MMIuLTOtAABAHRHhuR8AgHJEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAItUEAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAgC+6vTxV32+ns7nbBQAqWy0XRtilZaYVAACoIyI89wMAUI5IBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAD/qxvLh75tNlfXNy4MxuXx4d4IAPxCy0wrAABQR0R47gcAoByRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAA+E63vj22AvBTr5d3RgDgj5yeX7V2dDis3yeTYRgMAgBACR98ADf8POR34gAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Conversion</div><div class="t m0 x32 h10 y16c ff1 fs7 fc0 sc0 ls0 ws0">F<span class="_ _3"></span>rom<span class="_ _4a"> </span>T<span class="_ _7"></span>o<span class="_ _4b"> </span>Cost</div><div class="t m0 x10 h10 y16d ffb fs7 fc0 sc0 ls0 ws0">Signed<span class="_ _4c"> </span>Unsigned<span class="_ _4d"> </span><span class="ffe">no<span class="_ _d"> </span>cost,<span class="_ _26"> </span>bit<span class="_ _d"> </span>representation<span class="_ _26"> </span>is<span class="_ _d"> </span>the<span class="_ _d"> </span>same</span></div><div class="t m0 x10 h10 y16e ffb fs7 fc0 sc0 ls0 ws0">Unsigned<span class="_ _4e"> </span>Larger<span class="_ _9"> </span>Unsigned<span class="_ _24"> </span><span class="ffe">no<span class="_ _d"> </span>cost,<span class="_ _d"> </span>register<span class="_ _d"> </span>extended</span></div><div class="t m0 x10 h10 y16f ffb fs7 fc0 sc0 ls0 ws0">Signed<span class="_ _4c"> </span>Larger<span class="_ _9"> </span>Signed<span class="_ _37"> </span><span class="ffe">1<span class="_ _26"> </span>clo<span class="_ _b"></span>ck-cycle,<span class="_ _d"> </span>register<span class="_ _d"> </span>+<span class="_ _d"> </span>sign<span class="_ _26"> </span>extended</span></div><div class="t m0 x10 hd y170 ffb fs7 fc0 sc0 ls0 ws0">Integer<span class="_ _4d"> </span>Floating-point</div><div class="t m0 x33 h10 y171 ffe fs7 fc0 sc0 ls0 ws0">4-16<span class="_ _d"> </span>clock-cycles</div><div class="t m0 x33 h10 y172 ffe fs7 fc0 sc0 ls0 ws0">Signed<span class="_ _d"> </span><span class="ff17">→<span class="_ _26"> </span></span>Floating-p<span class="_ _b"></span>oint<span class="_ _d"> </span>is<span class="_ _d"> </span>faster<span class="_ _d"> </span>than</div><div class="t m0 x33 h10 y173 ffe fs7 fc0 sc0 ls0 ws0">Unsigned<span class="_ _d"> </span><span class="ff17">→<span class="_ _26"> </span></span>Floating-p<span class="_ _b"></span>oint<span class="_ _d"> </span>(except<span class="_ _d"> </span><span class="ffb">AVX512</span></div><div class="t m0 x33 h10 y174 ffe fs7 fc0 sc0 ls0 ws0">instruction<span class="_ _d"> </span>set<span class="_ _26"> </span>is<span class="_ _d"> </span>enabled)</div><div class="t m0 x10 h10 y175 ffb fs7 fc0 sc0 ls0 ws0">Floating-point<span class="_ _24"> </span>Integer<span class="_ _4c"> </span><span class="ffe">fast<span class="_ _d"> </span>if<span class="_ _c"> </span></span>SSE2<span class="ffe">,<span class="_ _d"> </span>slow<span class="_ _26"> </span>otherwise<span class="_ _d"> </span>(50-100<span class="_ _d"> </span>clo<span class="_ _b"></span>ck-cycles)</span></div><div class="t m0 xb h10 y176 ffb fs7 fcc sc0 ls0 ws0">Optimizing<span class="_ _9"> </span>software<span class="_ _9"> </span>in<span class="_ _21"> </span>C++<span class="ffe">,<span class="_ _d"> </span><span class="ff18">Agner<span class="_ _d"> </span>F<span class="_ _3"></span>og</span></span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">37/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf2a" class="pf w0 h0" data-page-no="2a"><div class="pc pc2a w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Floating-P<span class="_ _3"></span>oint<span class="_ _1b"> </span>Division</div><div class="t m0 x1 hb y177 ff1 fs6 fc0 sc0 ls0 ws0">Multiplication<span class="_ _f"> </span>is<span class="_ _8"> </span>much<span class="_ _8"> </span>faster<span class="_ _8"> </span>than<span class="_ _8"> </span>division*</div><div class="t m0 x1 hd y178 ffb fs7 fc0 sc0 ls0 ws0">not<span class="_ _9"> </span>optimized:</div><div class="t m0 x1 hd y179 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>&quot;value&quot;<span class="_ _9"> </span>is<span class="_ _21"> </span>floating-point<span class="_ _9"> </span>(dynamic)</div><div class="t m0 x1 hd y17a ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>N;<span class="_ _9"> </span>i<span class="fc8">++</span>)</span></span></div><div class="t m0 xd hd y17b ffb fs7 fc0 sc0 ls0 ws0">A[i]<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>B[i]<span class="_ _21"> </span><span class="fc8">/<span class="_ _9"> </span></span>value;</div><div class="t m0 x1 hd y17c ffb fs7 fc0 sc0 ls0 ws0">optimized:</div><div class="t m0 x1 hd y17d ffb fs7 fc0 sc0 ls0 ws0">div<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>1.0<span class="_ _21"> </span>/<span class="_ _9"> </span></span>value;<span class="_ _45"> </span><span class="ffa fc5">//<span class="_ _21"> </span>div<span class="_ _9"> </span>is<span class="_ _9"> </span>floating-point</span></div><div class="t m0 x1 hd y17e ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>N;<span class="_ _9"> </span>i<span class="fc8">++</span>)</span></span></div><div class="t m0 xd hd y17f ffb fs7 fc0 sc0 ls0 ws0">A[i]<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>B[i]<span class="_ _21"> </span><span class="fc8">*<span class="_ _9"> </span></span>div;</div><div class="t m0 xb h10 y180 ff1 fs7 fcc sc0 ls0 ws0">*<span class="_ _d"> </span><span class="ffe">Multiplying<span class="_ _26"> </span>by<span class="_ _d"> </span>the<span class="_ _26"> </span>inverse<span class="_ _d"> </span>is<span class="_ _d"> </span>not<span class="_ _d"> </span>the<span class="_ _d"> </span>same<span class="_ _d"> </span>as<span class="_ _d"> </span>the<span class="_ _26"> </span>division</span></div><div class="t m0 x27 h10 y181 ffe fs7 fcc sc0 ls0 ws0">see<span class="_ _d"> </span><span class="ffb">lemire.me/blog/2019/03/12</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">38/93</div><a class="l" href="https://lemire.me/blog/2019/03/12/multiplying-by-the-inverse-is-not-the-same-as-the-division/"><div class="d m1" style="border-style:none;position:absolute;left:57.090000px;bottom:5.142000px;width:119.676000px;height:12.000000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf2b" class="pf w0 h0" data-page-no="2b"><div class="pc pc2b w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Floating-P<span class="_ _3"></span>oint<span class="_ _1b"> </span>FMA</div><div class="t m0 x1 hb y177 ff4 fs6 fc0 sc0 ls0 ws0">Mo<span class="_ _b"></span>dern<span class="_ _c"> </span>processors<span class="_ _c"> </span>allo<span class="_ _3"></span>w<span class="_ _f"> </span>p<span class="_ _b"></span>erfo<span class="_ _3"></span>rming<span class="_ _10"> </span><span class="ff6">a<span class="_"> </span>*<span class="_"> </span>b<span class="_"> </span>+<span class="_"> </span>c<span class="_ _10"> </span></span>in<span class="_ _f"> </span>a<span class="_ _c"> </span>single<span class="_ _f"> </span>op<span class="_ _b"></span>eration,<span class="_ _c"> </span>called<span class="_ _f"> </span><span class="ff1">fused</span></div><div class="t m0 x1 hb y182 ff1 fs6 fc0 sc0 ls0 ws0">multiply-add<span class="_ _c"> </span><span class="ff4">(<span class="_ _d"> </span><span class="ff6">std::fma<span class="_ _10"> </span></span>in<span class="_ _c"> </span><span class="fcd">C++11</span>).<span class="_ _21"> </span>This<span class="_ _c"> </span>implies<span class="_ _f"> </span>b<span class="_ _b"></span>etter<span class="_ _c"> </span>p<span class="_ _b"></span>erformance<span class="_ _c"> </span>and<span class="_ _c"> </span>accuracy</span></div><div class="t m0 x1 hb y183 ff4 fs6 fc0 sc0 ls0 ws0">CPU<span class="_ _c"> </span>processors<span class="_ _c"> </span>perform<span class="_ _c"> </span>computations<span class="_ _c"> </span>with<span class="_ _f"> </span>a<span class="_ _c"> </span>larger<span class="_ _c"> </span>register<span class="_ _c"> </span>size<span class="_ _c"> </span>than<span class="_ _f"> </span>the<span class="_ _c"> </span>original<span class="_ _c"> </span>data</div><div class="t m0 x1 hb y184 ff4 fs6 fc0 sc0 ls0 ws0">t<span class="_ _3"></span>yp<span class="_ _b"></span>e<span class="_ _f"> </span>(e.g.<span class="_ _21"> </span>48-bit<span class="_ _c"> </span>for<span class="_ _c"> </span>32-bit<span class="_ _c"> </span>floating-p<span class="_ _b"></span>oint)<span class="_ _f"> </span>fo<span class="_ _3"></span>r<span class="_ _f"> </span>p<span class="_ _b"></span>erforming<span class="_ _c"> </span>this<span class="_ _c"> </span>op<span class="_ _b"></span>eration</div><div class="t m0 x1 hb y185 ff4 fs6 fc0 sc0 ls0 ws0">Compiler<span class="_ _c"> </span>b<span class="_ _b"></span>ehavior:</div><div class="t m0 xb h6 y186 ff8 fs4 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">GCC<span class="_ _d"> </span>9<span class="_ _c"> </span>and<span class="_ _d"> </span>ICC<span class="_ _c"> </span>19<span class="_ _d"> </span>produce<span class="_ _c"> </span>a<span class="_ _d"> </span>single<span class="_ _c"> </span>instruction<span class="_ _d"> </span>for<span class="_ _12"> </span><span class="ff6">std::fma<span class="_ _12"> </span></span>and<span class="_ _d"> </span>for<span class="_ _12"> </span><span class="ff6">a<span class="_"> </span>*<span class="_"> </span>b<span class="_"> </span>+<span class="_"> </span>c<span class="_ _12"> </span></span>with</span></div><div class="t m0 xc hc y187 ff6 fs4 fc0 sc0 ls0 ws0">-O3<span class="_"> </span>-march=native</div><div class="t m0 xb h6 y188 ff8 fs4 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Clang<span class="_ _d"> </span>9<span class="_ _c"> </span>and<span class="_ _d"> </span>MSVC<span class="_ _d"> </span>19.*<span class="_ _c"> </span>p<span class="_ _3"></span>ro<span class="_ _b"></span>duce<span class="_ _c"> </span>a<span class="_ _d"> </span>single<span class="_ _c"> </span>instruction<span class="_ _d"> </span>for<span class="_ _12"> </span><span class="ff6">std::fma<span class="_ _12"> </span></span>but<span class="_ _d"> </span>not<span class="_ _c"> </span>fo<span class="_ _3"></span>r</span></div><div class="t m0 xc hc y189 ff6 fs4 fc0 sc0 ls0 ws0">a<span class="_"> </span>*<span class="_"> </span>b<span class="_"> </span>+<span class="_"> </span>c</div><div class="t m0 xb hd y18a ffb fs7 fcc sc0 ls0 ws0">FMA:<span class="_ _9"> </span>solve<span class="_ _9"> </span>quadratic<span class="_ _21"> </span>equation</div><div class="t m0 x5 hd y18b ffb fs7 fcc sc0 ls0 ws0">FMA:<span class="_ _9"> </span>extended<span class="_ _9"> </span>precision<span class="_ _21"> </span>addition<span class="_ _9"> </span>and<span class="_ _21"> </span>multiplication<span class="_ _9"> </span>by<span class="_ _21"> </span>constant</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">39/93</div><a class="l" href="https://marc-b-reynolds.github.io/math/2020/01/10/Quadratic.html"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:16.006000px;width:138.506000px;height:11.657000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://marc-b-reynolds.github.io/math/2020/01/09/ConstAddMul.html"><div class="d m1" style="border-style:none;position:absolute;left:34.324000px;bottom:1.615000px;width:298.555000px;height:11.154000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf2c" class="pf w0 h0" data-page-no="2c"><div class="pc pc2c w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIXElEQVR42u3YsQ3CMBRFURvFomQGlCoToIgaic2yRMahyBDZIJVL3DgdM3yhc0Z41dXL4+OZAAAgjH37XKwAAEA0IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAgJ/cWrMCAABxlFI8qQAAhCNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqSYAAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSTQAAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgDwP4a63K0ABHG8ViMAMM3vnG/XXr8p9d4NAgBACCfrNBQEUQVbXgAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Compiler<span class="_ _1b"> </span>Intrinsic<span class="_ _1b"> </span>Functions<span class="_ _4f"> </span>1/5</div><div class="t m0 x1 hb y18c ff1 fs6 fc0 sc0 ls0 ws0">Compiler<span class="_ _f"> </span>intrinsics<span class="_ _f"> </span><span class="ff4">are<span class="_ _c"> </span>highly<span class="_ _c"> </span>optimized<span class="_ _c"> </span>functions<span class="_ _f"> </span>directly<span class="_ _c"> </span>provided<span class="_ _c"> </span>b<span class="_ _3"></span>y<span class="_ _f"> </span>the<span class="_ _c"> </span>compiler</span></div><div class="t m0 x1 hb y18d ff4 fs6 fc0 sc0 ls0 ws0">instead<span class="_ _c"> </span>of<span class="_ _c"> </span>external<span class="_ _f"> </span>libra<span class="_ _3"></span>ries</div><div class="t m0 x1 hb y18e ff9 fs6 fc0 sc0 ls0 ws0">A<span class="_ _3"></span>dvantages:</div><div class="t m0 xb hb y18f ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Directly<span class="_ _c"> </span>mapp<span class="_ _b"></span>ed<span class="_ _f"> </span>to<span class="_ _c"> </span>hardw<span class="_ _3"></span>a<span class="_ _3"></span>re<span class="_ _f"> </span>functionalities<span class="_ _c"> </span>if<span class="_ _f"> </span>available</span></div><div class="t m0 xb hb y190 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Inline<span class="_ _c"> </span>expansion</span></div><div class="t m0 xb hb y191 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Do<span class="_ _d"> </span>not<span class="_ _c"> </span>inhibit<span class="_ _d"> </span>high-level<span class="_ _c"> </span>optimizations,<span class="_ _d"> </span>and<span class="_ _c"> </span>they<span class="_ _d"> </span>are<span class="_ _d"> </span>p<span class="_ _b"></span>ortable<span class="_ _d"> </span>contra<span class="_ _3"></span>ry<span class="_ _c"> </span>to<span class="_ _d"> </span><span class="ff6">asm<span class="_ _c"> </span></span>co<span class="_ _b"></span>de</span></div><div class="t m0 x1 hb y192 ff9 fs6 fc0 sc0 ls0 ws0">Dra<span class="_ _3"></span>wbacks:</div><div class="t m0 xb hb y193 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">P<span class="_ _3"></span>ortabilit<span class="_ _3"></span>y<span class="_ _c"> </span>is<span class="_ _f"> </span>limited<span class="_ _c"> </span>to<span class="_ _f"> </span>a<span class="_ _c"> </span>sp<span class="_ _b"></span>ecific<span class="_ _f"> </span>compiler</span></div><div class="t m0 xb hb y194 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Some<span class="_ _c"> </span>intrinsics<span class="_ _f"> </span>do<span class="_ _c"> </span>not<span class="_ _f"> </span>w<span class="_ _3"></span>ork<span class="_ _c"> </span>on<span class="_ _c"> </span>all<span class="_ _c"> </span>platforms</span></div><div class="t m0 xb hb y195 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">The<span class="_ _c"> </span>same<span class="_ _f"> </span>instricics<span class="_ _c"> </span>can<span class="_ _f"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>mapp<span class="_ _b"></span>ed<span class="_ _f"> </span>to<span class="_ _c"> </span>a<span class="_ _f"> </span>non-optimal<span class="_ _c"> </span>instruction<span class="_ _f"> </span>sequence</span></div><div class="t m0 x6 hb y196 ff4 fs6 fc0 sc0 ls0 ws0">dep<span class="_ _b"></span>ending<span class="_ _c"> </span>on<span class="_ _f"> </span>the<span class="_ _c"> </span>compiler</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">40/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf2d" class="pf w0 h0" data-page-no="2d"><div class="pc pc2d w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Compiler<span class="_ _1b"> </span>Intrinsic<span class="_ _1b"> </span>Functions<span class="_ _4f"> </span>2/5</div><div class="t m0 x1 hb y6d ff4 fs6 fc0 sc0 ls0 ws0">Most<span class="_ _c"> </span>compilers<span class="_ _c"> </span>provide<span class="_ _c"> </span>intrinsics<span class="_ _c"> </span><span class="ff1">bit-manipulation<span class="_ _8"> </span>functions<span class="_ _f"> </span></span>for<span class="_ _c"> </span><span class="ff6">SSE4.2<span class="_ _c"> </span></span>or<span class="_ _c"> </span><span class="ff6">ABM</span></div><div class="t m0 x1 hb ye9 ff4 fs6 fc0 sc0 ls0 ws0">(A<span class="_ _3"></span>dvanced<span class="_ _f"> </span>Bit<span class="_ _c"> </span>Manipulation)<span class="_ _f"> </span>instruction<span class="_ _c"> </span>sets<span class="_ _f"> </span>fo<span class="_ _3"></span>r<span class="_ _f"> </span>Intel<span class="_ _c"> </span>and<span class="_ _f"> </span>AMD<span class="_ _c"> </span>processors</div><div class="t m0 x1 hb y197 ff4 fs6 fc0 sc0 ls0 ws0">GCC<span class="_ _c"> </span>examples:</div><div class="t m0 x4 h6 y198 ff5 fs4 fc0 sc0 ls0 ws0">__builtin_popcount(x)<span class="_ _15"> </span><span class="ff4">count<span class="_ _d"> </span>the<span class="_ _c"> </span>numb<span class="_ _b"></span>er<span class="_ _d"> </span>of<span class="_ _c"> </span>one<span class="_ _d"> </span>bits</span></div><div class="t m0 xb h6 y199 ff5 fs4 fc0 sc0 ls0 ws0">__builtin_clz(x)<span class="_ _15"> </span><span class="ff4">(<span class="ff6">count<span class="_"> </span>leading<span class="_"> </span>zeros</span>)<span class="_ _d"> </span>counts<span class="_ _c"> </span>the<span class="_ _d"> </span>numb<span class="_ _b"></span>er<span class="_ _c"> </span>of<span class="_ _d"> </span>zero<span class="_ _c"> </span>bits<span class="_ _d"> </span>following<span class="_ _d"> </span>the</span></div><div class="t m0 x34 h6 y19a ff4 fs4 fc0 sc0 ls0 ws0">most<span class="_ _d"> </span>significant<span class="_ _c"> </span>one<span class="_ _d"> </span>bit</div><div class="t m0 xb h6 y19b ff5 fs4 fc0 sc0 ls0 ws0">__builtin_ctz(x)<span class="_ _15"> </span><span class="ff4">(<span class="ff6">count<span class="_"> </span>trailing<span class="_"> </span>zeros</span>)<span class="_ _d"> </span>counts<span class="_ _c"> </span>the<span class="_ _d"> </span>numb<span class="_ _b"></span>er<span class="_ _c"> </span>of<span class="_ _d"> </span>zero<span class="_ _c"> </span>bits<span class="_ _d"> </span>preceding</span></div><div class="t m0 x34 h6 y19c ff4 fs4 fc0 sc0 ls0 ws0">the<span class="_ _d"> </span>least<span class="_ _c"> </span>significant<span class="_ _d"> </span>one<span class="_ _c"> </span>bit</div><div class="t m0 xb h6 y19d ff5 fs4 fc0 sc0 ls0 ws0">__builtin_ffs(x)<span class="_ _15"> </span><span class="ff4">(<span class="ff6">find<span class="_"> </span>first<span class="_"> </span>set</span>)<span class="_ _d"> </span>index<span class="_ _c"> </span>of<span class="_ _d"> </span>the<span class="_ _c"> </span>least<span class="_ _d"> </span>significant<span class="_ _c"> </span>one<span class="_ _d"> </span>bit</span></div><div class="t m0 xb hd y19e ffb fs7 fcc sc0 ls0 ws0">gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">41/93</div><a class="l" href="https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:0.099000px;width:218.531000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf2e" class="pf w0 h0" data-page-no="2e"><div class="pc pc2e w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Compiler<span class="_ _1b"> </span>Intrinsic<span class="_ _1b"> </span>Functions<span class="_ _4f"> </span>3/5</div><div class="t m0 xb hb y19f ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Compute<span class="_ _c"> </span><span class="ff6">integer<span class="_"> </span>log2</span></span></div><div class="t m0 x6 hd y1a0 ff5 fs7 fc9 sc0 ls0 ws0">inline<span class="_"> </span><span class="fc6">unsigned<span class="_"> </span><span class="ffb fc7">log2<span class="fc0">(</span></span>unsigned<span class="_"> </span><span class="ffb fc0">x)<span class="_ _9"> </span>{</span></span></div><div class="t m0 x2b hd y1a1 ff5 fs7 fc9 sc0 ls0 ws0">return<span class="_"> </span><span class="ffb fc8">31<span class="_ _9"> </span>-<span class="_ _9"> </span><span class="fc0">__builtin_clz(x);</span></span></div><div class="t m0 x6 hd y1a2 ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xb hb y1a3 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Check<span class="_ _c"> </span>if<span class="_ _f"> </span>a<span class="_ _c"> </span>numb<span class="_ _b"></span>er<span class="_ _f"> </span>is<span class="_ _c"> </span>a<span class="_ _f"> </span><span class="ff6">power<span class="_"> </span>of<span class="_"> </span>2</span></span></div><div class="t m0 x6 hd y1a4 ff5 fs7 fc9 sc0 ls0 ws0">inline<span class="_"> </span><span class="fc6">bool<span class="_"> </span><span class="ffb fc7">is_power2<span class="fc0">(</span></span>unsigned<span class="_"> </span><span class="ffb fc0">x)<span class="_ _9"> </span>{</span></span></div><div class="t m0 x2b hd y1a5 ff5 fs7 fc9 sc0 ls0 ws0">return<span class="_"> </span><span class="ffb fc0">__builtin_popcount(x)<span class="_ _9"> </span><span class="fc8">==<span class="_ _9"> </span>1</span>;</span></div><div class="t m0 x6 hd y1a6 ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xb hb y1a7 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Bit<span class="_ _c"> </span>search<span class="_ _c"> </span>and<span class="_ _c"> </span>clear</span></div><div class="t m0 x6 hd y1a8 ff5 fs7 fc9 sc0 ls0 ws0">inline<span class="_"> </span><span class="fc6">int<span class="_"> </span><span class="ffb fc7">bit_search_clear<span class="fc0">(</span></span>unsigned<span class="_"> </span><span class="ffb fc0">x)<span class="_ _9"> </span>{</span></span></div><div class="t m0 x2b hd y1a9 ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffb fc0">pos<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>__builtin_ffs(x);<span class="_ _21"> </span><span class="ffa fc5">//<span class="_ _9"> </span>range<span class="_ _21"> </span>[0,<span class="_ _9"> </span>31]</span></span></div><div class="t m0 x2b hd y1aa ffb fs7 fc0 sc0 ls0 ws0">x<span class="_ _3b"> </span><span class="fc8">&amp;=<span class="_ _1b"> </span></span><span class="ff17"></span>(<span class="fc8">1u<span class="_ _21"> </span>&lt;&lt;<span class="_ _9"> </span></span>pos);</div><div class="t m0 x2b hd y1ab ff5 fs7 fc9 sc0 ls0 ws0">return<span class="_"> </span><span class="ffb fc0">pos;</span></div><div class="t m0 x6 hd y1ac ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">42/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf2f" class="pf w0 h0" data-page-no="2f"><div class="pc pc2f w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Compiler<span class="_ _1b"> </span>Intrinsic<span class="_ _1b"> </span>Functions<span class="_ _4f"> </span>4/5</div><div class="t m0 x1 hb y18c ff1 fs6 fc0 sc0 ls0 ws0">Example<span class="_ _f"> </span>of<span class="_ _8"> </span>intrinsic<span class="_ _8"> </span>p<span class="_ _b"></span>ortabilit<span class="_ _3"></span>y<span class="_ _f"> </span>issue:</div><div class="t m0 x1a hb y1ad ff5 fs6 fc0 sc0 ls0 ws0">__builtin_popcount()<span class="_ _10"> </span><span class="ff4">GCC<span class="_ _c"> </span>produces<span class="_ _10"> </span><span class="ff6">__popcountdi2<span class="_ _10"> </span></span>instruction<span class="_ _c"> </span>while<span class="_ _f"> </span>Intel</span></div><div class="t m0 x1 hb y18e ff4 fs6 fc0 sc0 ls0 ws0">Compiler<span class="_ _c"> </span>(ICC)<span class="_ _c"> </span>produces<span class="_ _f"> </span>13<span class="_ _c"> </span>instructions</div><div class="t m0 x1a hb y1ae ff5 fs6 fc0 sc0 ls0 ws0">_mm_popcnt_u32<span class="_ _10"> </span><span class="ff4">GCC<span class="_ _c"> </span>and<span class="_ _c"> </span>ICC<span class="_ _f"> </span>produce<span class="_ _10"> </span><span class="ff6">popcnt<span class="_ _10"> </span></span>instruction,<span class="_ _c"> </span>but<span class="_ _f"> </span>it<span class="_ _c"> </span>is<span class="_ _c"> </span>ava<span class="_ _b"></span>ilable<span class="_ _c"> </span>only</span></div><div class="t m0 x1 hb y1af ff4 fs6 fc0 sc0 ls0 ws0">fo<span class="_ _3"></span>r<span class="_ _f"> </span>p<span class="_ _3"></span>ro<span class="_ _b"></span>cessor<span class="_ _c"> </span>with<span class="_ _c"> </span>supp<span class="_ _b"></span>ort<span class="_ _c"> </span>fo<span class="_ _3"></span>r<span class="_ _f"> </span><span class="ff6">SSE4.2<span class="_ _f"> </span></span>instruction<span class="_ _c"> </span>set</div><div class="t m0 x1 hb y1b0 ff1 fs6 fc0 sc0 ls0 ws0">Mo<span class="_ _3"></span>re<span class="_ _8"> </span>advanced<span class="_ _8"> </span>usage</div><div class="t m0 xb hb y1b1 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Compute<span class="_ _c"> </span>CRC:<span class="_ _10"> </span><span class="ff6">_mm_crc32_u32</span></span></div><div class="t m0 xb hb y1b2 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">AES<span class="_ _c"> </span>cryptography:<span class="_ _4"> </span><span class="ff6">_mm256_aesenclast_epi128</span></span></div><div class="t m0 xb hb y1b3 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Hash<span class="_ _c"> </span>function:<span class="_ _4"> </span><span class="ff6">_mm_sha256msg1_epu32</span></span></div><div class="t m0 xb hd y1b4 ffb fs7 fcc sc0 ls0 ws0">software.intel.com/sites/landingpage/IntrinsicsGuide/</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">43/93</div><a class="l" href="https://software.intel.com/sites/landingpage/IntrinsicsGuide/"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:0.999000px;width:251.482000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf30" class="pf w0 h0" data-page-no="30"><div class="pc pc30 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAJB0lEQVR42u3ZMWoVURTH4Rm5B4lwcQ1i9WoLEXnFKxRxY27CvaSIhTtI4w6swoU8cpqXzsJAmGCMZ8bvW8Gd/zQ/7p1fv30/AQBAGT++f3tmBQAAqhGpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAD8MmemFQAAqCMi3KQCAFCOSAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQDYkGYC2JLd/mAElru8ODcCUNOcmVYAAKCOiPDcDwBAOSIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAKxTW8tBr4/HNx8/+2EAAH/b5cW5SF3qxdlZkckAADZstz9UOIbnfgAAyhGpAACIVAAAEKkAAIhUAAD4U80EAADLjTG29Dm995oHc5MKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAP6tZgIAgOV670Z4Am5SAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAA92lrOej18ThN025/8M8AADZvzkwrAABQR0R47gcAoByRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAuE8zAbDEGMMIZfXejQBsjJtUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAOBB5sy0AgAAdUSEm1QAAMoRqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAAA/QTAAA3DXGMMJdvXcjPA03qQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAMCjmjPTCgAA1BERzQoAwHqNMYzwm977Br7Ccz8AACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBAFi3OTOtAABAHRHhJhUAgHJEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAAI+mXX15ZQXgf/bzw1cjAJSye/dpnl8+P13dTNPpdDIIAAAl3AIwqz7Q4XoMmAAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Compiler<span class="_ _1b"> </span>Intrinsic<span class="_ _1b"> </span>Functions<span class="_ _4f"> </span>5/5</div><div class="t m0 x1 hb y1b5 ff9 fs6 fc0 sc0 ls0 ws0">Using<span class="_ _c"> </span>intrinsic<span class="_ _c"> </span>instructions<span class="_ _f"> </span>is<span class="_ _c"> </span>extremely<span class="_ _f"> </span>dangerous<span class="_ _c"> </span>if<span class="_ _f"> </span>the<span class="_ _c"> </span>target<span class="_ _c"> </span>p<span class="_ _3"></span>ro<span class="_ _b"></span>cessor<span class="_ _c"> </span>do<span class="_ _b"></span>es<span class="_ _c"> </span>not</div><div class="t m0 x1 hb y1b6 ff9 fs6 fc0 sc0 ls0 ws0">natively<span class="_ _c"> </span>supp<span class="_ _b"></span>ort<span class="_ _c"> </span>such<span class="_ _c"> </span>instructions</div><div class="t m0 x1 hb y1b7 ff4 fs6 fc0 sc0 ls0 ws0">Example:</div><div class="t m0 x1a hb y1b8 ff9 fs6 fc0 sc0 ls0 ws0">“If<span class="_ _8"> </span>you<span class="_ _8"> </span>run<span class="_ _8"> </span>co<span class="_ _b"></span>de<span class="_ _1b"> </span>that<span class="_ _8"> </span>uses<span class="_ _1b"> </span>the<span class="_ _1b"> </span>intrinsic<span class="_ _8"> </span>on<span class="_ _1b"> </span>ha<span class="_ _3"></span>rdwa<span class="_ _3"></span>re<span class="_ _8"> </span>that<span class="_ _1b"> </span>do<span class="_ _b"></span>esnt<span class="_ _1b"> </span>supp<span class="_ _b"></span>ort<span class="_ _f"> </span>the<span class="_ _2f"> </span><span class="ffa">lzcnt</span></div><div class="t m0 x1a hb y1b9 ff9 fs6 fc0 sc0 ls0 ws0">instruction,<span class="_ _c"> </span>the<span class="_ _c"> </span>results<span class="_ _f"> </span>are<span class="_ _c"> </span>unp<span class="_ _3"></span>redictable”<span class="_ _c"> </span>-<span class="_ _f"> </span>MSVC</div><div class="t m0 x1 hb y1ba ff4 fs6 fc0 sc0 ls0 ws0">on<span class="_ _c"> </span>the<span class="_ _c"> </span>contrary<span class="_ _7"></span>,<span class="_ _c"> </span>GNU<span class="_ _c"> </span>and<span class="_ _f"> </span>clang<span class="_ _10"> </span><span class="ff6">__builtin_*<span class="_ _10"> </span></span>instructions<span class="_ _c"> </span>are<span class="_ _c"> </span>alw<span class="_ _3"></span>ays<span class="_ _c"> </span>w<span class="_ _3"></span>ell-defined.</div><div class="t m0 x1 hb y1bb ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _c"> </span>instruction<span class="_ _c"> </span>is<span class="_ _f"> </span>translated<span class="_ _c"> </span>to<span class="_ _f"> </span>a<span class="_ _c"> </span>non-optimal<span class="_ _f"> </span>op<span class="_ _b"></span>eration<span class="_ _c"> </span>sequence<span class="_ _f"> </span>in<span class="_ _c"> </span>the<span class="_ _f"> </span>wo<span class="_ _3"></span>rst<span class="_ _c"> </span>case</div><div class="t m0 x1 hb y1bc ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _c"> </span>instruction<span class="_ _c"> </span>set<span class="_ _f"> </span>supp<span class="_ _b"></span>ort<span class="_ _c"> </span>should<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>checked<span class="_ _c"> </span>at<span class="_ _c"> </span><span class="ff9">run-time<span class="_ _1b"> </span></span>(e.g.<span class="_ _21"> </span>with<span class="_ _10"> </span><span class="ff6">__cpuid</span></div><div class="t m0 x1 hb y1bd ff4 fs6 fc0 sc0 ls0 ws0">function<span class="_ _c"> </span>on<span class="_ _c"> </span>MSV<span class="_ _3"></span>C),<span class="_ _c"> </span>o<span class="_ _3"></span>r,<span class="_ _c"> </span>when<span class="_ _c"> </span>available,<span class="_ _c"> </span>by<span class="_ _d"> </span>using<span class="_ _c"> </span>compiler-time<span class="_ _c"> </span>macro<span class="_ _c"> </span>(e.g.<span class="_ _4"> </span><span class="ff6">__AVX__<span class="_ _26"> </span></span>)</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">44/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf31" class="pf w0 h0" data-page-no="31"><div class="pc pc31 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">A<span class="_ _3"></span>utomatic<span class="_ _1b"> </span>Compiler<span class="_ _1b"> </span>Function<span class="_ _8"> </span>T<span class="_ _7"></span>ransfo<span class="_ _3"></span>rmation</div><div class="t m0 x1a hb y18c ff6 fs6 fc0 sc0 ls0 ws0">std::abs<span class="_ _10"> </span><span class="ff4">can<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>recognized<span class="_ _f"> </span>by<span class="_ _c"> </span>the<span class="_ _c"> </span>compiler<span class="_ _c"> </span>and<span class="_ _f"> </span>transfo<span class="_ _3"></span>rmed<span class="_ _f"> </span>to<span class="_ _c"> </span>a<span class="_ _f"> </span>hardw<span class="_ _3"></span>a<span class="_ _3"></span>re</span></div><div class="t m0 x1 hb y18d ff4 fs6 fc0 sc0 ls0 ws0">instruction</div><div class="t m0 x1 hb y18e ff4 fs6 fc0 sc0 ls0 ws0">In<span class="_ _c"> </span>a<span class="_ _c"> </span>similar<span class="_ _c"> </span>w<span class="_ _3"></span>ay<span class="_ _7"></span>,<span class="_ _c"> </span><span class="fcd">C++20<span class="_ _c"> </span></span>p<span class="_ _3"></span>rovides<span class="_ _f"> </span>a<span class="_ _c"> </span>p<span class="_ _b"></span>ortable<span class="_ _c"> </span>and<span class="_ _c"> </span>efficient<span class="_ _c"> </span>wa<span class="_ _3"></span>y<span class="_ _c"> </span>to<span class="_ _c"> </span>express<span class="_ _c"> </span>bit<span class="_ _c"> </span>op<span class="_ _b"></span>erations</div><div class="t m0 x1a h11 y1be ff6 fs6 fc0 sc0 ls0 ws0">&lt;bit&gt;</div><div class="t m0 x35 hb y190 ff6 fs6 fc0 sc0 ls0 ws0">rotate<span class="_"> </span>left<span class="_ _6"> </span><span class="ff4">:<span class="_ _4"> </span></span>std::rotl</div><div class="t m0 x20 hb y191 ff6 fs6 fc0 sc0 ls0 ws0">rotate<span class="_"> </span>right<span class="_ _6"> </span><span class="ff4">:<span class="_ _4"> </span></span>std::rotr</div><div class="t m0 x36 hb y105 ff6 fs6 fc0 sc0 ls0 ws0">count<span class="_"> </span>leading<span class="_"> </span>zero<span class="_ _6"> </span><span class="ff4">:<span class="_ _4"> </span></span>std::countl_zero</div><div class="t m0 x9 hb y106 ff6 fs6 fc0 sc0 ls0 ws0">count<span class="_"> </span>leading<span class="_"> </span>one<span class="_ _6"> </span><span class="ff4">:<span class="_ _4"> </span></span>std::countl_one</div><div class="t m0 x37 hb y107 ff6 fs6 fc0 sc0 ls0 ws0">count<span class="_"> </span>trailing<span class="_"> </span>zero<span class="_ _6"> </span><span class="ff4">:<span class="_ _4"> </span></span>std::countr_zero</div><div class="t m0 x36 hb y1bf ff6 fs6 fc0 sc0 ls0 ws0">count<span class="_"> </span>trailing<span class="_"> </span>one<span class="_ _6"> </span><span class="ff4">:<span class="_ _4"> </span></span>std::countr_one</div><div class="t m0 x38 hb y1c0 ff6 fs6 fc0 sc0 ls0 ws0">population<span class="_"> </span>count<span class="_ _6"> </span><span class="ff4">:<span class="_ _4"> </span></span>std::popcount</div><div class="t m0 xb hd y1c1 ffb fs7 fcc sc0 ls0 ws0">Why<span class="_ _9"> </span>is<span class="_ _9"> </span>the<span class="_ _21"> </span>standard<span class="_ _9"> </span>&quot;abs&quot;<span class="_ _21"> </span>function<span class="_ _9"> </span>faster<span class="_ _21"> </span>than<span class="_ _9"> </span>mine?</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">45/93</div><a class="l" href="https://stackoverflow.com/questions/66023408/why-is-the-standard-abs-function-faster-than-mine"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:0.671000px;width:246.775000px;height:13.444000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf32" class="pf w0 h0" data-page-no="32"><div class="pc pc32 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIdklEQVR42u3YsQkCMRiG4YtcsArOIFZOIGIt3GYu4TgWDuEGVsdVpomdAwSL/+B5Jghfmpc/HU6XAQAAwng9HxsrAAAQjUgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAOAn1VqtAABAHDlnl1QAAMIRqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAIAe44reuiyLDwMA6FNKWdFrXVIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpJgAAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAwMqkWqsVAACII+fskgoAQDgiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAC9xvm2twJAn/f1bgSAvzuep5R22zZ/hqG1ZhAAAEL4AshbGgLSFowLAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">V<span class="_ _3"></span>alue<span class="_ _1b"> </span>in<span class="_ _1b"> </span>a<span class="_ _9"> </span>Range</div><div class="t m0 x1 hb y6d ff1 fs6 fc0 sc0 ls0 ws0">Checking<span class="_ _f"> </span>if<span class="_ _8"> </span>a<span class="_ _8"> </span>non-negative<span class="_ _8"> </span>value<span class="_ _8"> </span><span class="ff19">x<span class="_ _21"> </span></span>is<span class="_ _f"> </span>within<span class="_ _8"> </span>a<span class="_ _8"> </span>range<span class="_ _8"> </span><span class="ff19">[A,<span class="_ _8"> </span>B]<span class="_ _21"> </span></span>can<span class="_ _8"> </span>b<span class="_ _b"></span>e<span class="_ _8"> </span>optimized<span class="_ _8"> </span>if</div><div class="t m0 x1 hb ye9 ff19 fs6 fc0 sc0 ls0 ws0">B<span class="_ _1b"> </span><span class="ff1">&gt;<span class="_ _8"> </span></span>A<span class="_ _f"> </span><span class="ff4">(useful<span class="_ _c"> </span>when<span class="_ _f"> </span>the<span class="_ _c"> </span>condition<span class="_ _f"> </span>is<span class="_ _c"> </span>rep<span class="_ _b"></span>eated<span class="_ _f"> </span>multiple<span class="_ _c"> </span>times)</span></div><div class="t m0 x1 hd y1c2 ff5 fs7 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffb fc0">(x<span class="_ _9"> </span><span class="fc8">&gt;=<span class="_ _9"> </span></span>A<span class="_ _21"> </span><span class="fc8">&amp;&amp;<span class="_ _9"> </span></span>x<span class="_ _21"> </span><span class="fc8">&lt;=<span class="_ _9"> </span></span>B)</span></div><div class="t m0 x1 hd y1c3 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span><span class="ff15">STEP<span class="_ _9"> </span>1</span>:<span class="_ _21"> </span>subtract<span class="_ _9"> </span><span class="ff15">A</span></div><div class="t m0 x1 hd y1c4 ff5 fs7 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffb fc0">(x<span class="_ _9"> </span><span class="fc8">-<span class="_ _9"> </span></span>A<span class="_ _21"> </span><span class="fc8">&gt;=<span class="_ _9"> </span></span>A<span class="_ _21"> </span><span class="fc8">-<span class="_ _9"> </span></span>A<span class="_ _21"> </span><span class="fc8">&amp;&amp;<span class="_ _9"> </span></span>x<span class="_ _9"> </span><span class="fc8">-<span class="_ _21"> </span></span>A<span class="_ _9"> </span><span class="fc8">&lt;=<span class="_ _21"> </span></span>B<span class="_ _9"> </span><span class="fc8">-<span class="_ _9"> </span></span>A)</span></div><div class="t m0 x1 hd y1c5 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>--&gt;</div><div class="t m0 x1 hd y1c6 ff5 fs7 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffb fc0">(x<span class="_ _9"> </span><span class="fc8">-<span class="_ _9"> </span></span>A<span class="_ _21"> </span><span class="fc8">&gt;=<span class="_ _9"> </span>0<span class="_ _21"> </span>&amp;&amp;<span class="_ _9"> </span></span>x<span class="_ _21"> </span><span class="fc8">-<span class="_ _9"> </span></span>A<span class="_ _9"> </span><span class="fc8">&lt;=<span class="_ _21"> </span></span>B<span class="_ _9"> </span><span class="fc8">-<span class="_ _21"> </span></span>A)<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _9"> </span>B<span class="_ _21"> </span>-<span class="_ _9"> </span>A<span class="_ _21"> </span>is<span class="_ _9"> </span>precomputed</span></span></div><div class="t m0 x1 hd y1c7 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span><span class="ff15">STEP<span class="_ _9"> </span>2</span></div><div class="t m0 x1 hd y1c8 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _14"> </span>-<span class="_ _9"> </span>convert<span class="_ _21"> </span>&quot;x<span class="_ _9"> </span>-<span class="_ _21"> </span>A<span class="_ _9"> </span>&gt;=<span class="_ _9"> </span>0&quot;<span class="_ _21"> </span>--&gt;<span class="_ _9"> </span>(unsigned)<span class="_ _21"> </span>(x<span class="_ _9"> </span>-<span class="_ _21"> </span>A)</div><div class="t m0 x1 hd y1c9 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _14"> </span>-<span class="_ _9"> </span>&quot;B<span class="_ _21"> </span>-<span class="_ _9"> </span>A&quot;<span class="_ _21"> </span>is<span class="_ _9"> </span>always<span class="_ _9"> </span>positive</div><div class="t m0 x1 hd y1ca ff5 fs7 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffb fc0">((</span><span class="fc6">unsigned<span class="ffb fc0">)<span class="_ _9"> </span>(x<span class="_ _9"> </span><span class="fc8">-<span class="_ _21"> </span></span>A)<span class="_ _9"> </span><span class="fc8">&lt;=<span class="_ _21"> </span></span>(</span>unsigned<span class="ffb fc0">)<span class="_ _9"> </span>(B<span class="_ _21"> </span><span class="fc8">-<span class="_ _9"> </span></span>A))</span></span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">46/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf33" class="pf w0 h0" data-page-no="33"><div class="pc pc33 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">V<span class="_ _3"></span>alue<span class="_ _1b"> </span>in<span class="_ _1b"> </span>a<span class="_ _9"> </span>Range<span class="_ _1b"> </span>Examples</div><div class="t m0 x1 hb y1cb ff4 fs6 fc0 sc0 ls0 ws0">Check<span class="_ _c"> </span>if<span class="_ _c"> </span>a<span class="_ _f"> </span>value<span class="_ _c"> </span>is<span class="_ _f"> </span>an<span class="_ _c"> </span>upp<span class="_ _0"></span>ercase<span class="_ _c"> </span>letter:</div><div class="t m0 x1 hd y1cc ff5 fs7 fc6 sc0 ls0 ws0">uint8_t<span class="_"> </span><span class="ffb fc0">x<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>...</span></div><div class="t m0 x1 hd y1cd ff5 fs7 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffb fc0">(x<span class="_ _9"> </span><span class="fc8">&gt;=<span class="_ _9"> </span><span class="ffd fca">&apos;<span class="ffb">A</span>&apos;<span class="_ _21"> </span></span>&amp;&amp;<span class="_ _9"> </span></span>x<span class="_ _21"> </span><span class="fc8">&lt;=<span class="_ _9"> </span><span class="ffd fca">&apos;<span class="ffb">Z</span>&apos;</span></span>)</span></div><div class="t m0 xd hd y1ce ffb fs7 fc0 sc0 ls0 ws0">...</div><div class="t m0 x39 h13 y1cf fff fs6 fc0 sc0 ls0 ws0">→</div><div class="t m0 x3a hd y1cc ff5 fs7 fc6 sc0 ls0 ws0">uint8_t<span class="_"> </span><span class="ffb fc0">x<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>...</span></div><div class="t m0 x3a hd y1cd ff5 fs7 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffb fc0">(x<span class="_ _9"> </span><span class="fc8">-<span class="_ _9"> </span><span class="ffd fca">&apos;<span class="ffb">A</span>&apos;<span class="_ _21"> </span></span>&lt;=<span class="_ _9"> </span><span class="ffd fca">&apos;<span class="ffb">Z</span>&apos;</span></span>)</span></div><div class="t m0 x3b hd y1ce ffb fs7 fc0 sc0 ls0 ws0">...</div><div class="t m0 x1 hb y1d0 ff4 fs6 fc0 sc0 ls0 ws0">A<span class="_ _c"> </span>more<span class="_ _c"> </span>general<span class="_ _c"> </span>case:</div><div class="t m0 x1 hd y1d1 ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffb fc0">x<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>...</span></div><div class="t m0 x1 hd y1d2 ff5 fs7 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffb fc0">(x<span class="_ _9"> </span><span class="fc8">&gt;=<span class="_ _9"> </span>-10<span class="_ _21"> </span>&amp;&amp;<span class="_ _9"> </span></span>x<span class="_ _21"> </span><span class="fc8">&lt;=<span class="_ _9"> </span>30</span>)</span></div><div class="t m0 xd hd y1d3 ffb fs7 fc0 sc0 ls0 ws0">...</div><div class="t m0 x39 h13 y1d4 fff fs6 fc0 sc0 ls0 ws0">→</div><div class="t m0 x3a hd y1d1 ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffb fc0">x<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>...</span></div><div class="t m0 x3a hd y1d2 ff5 fs7 fc9 sc0 ls0 ws0">if<span class="_"> </span><span class="ffb fc0">((</span><span class="fc6">unsigned<span class="ffb fc0">)<span class="_ _9"> </span>(x<span class="_ _9"> </span><span class="fc8">+<span class="_ _21"> </span>10</span>)<span class="_ _9"> </span><span class="fc8">&lt;=<span class="_ _21"> </span>40</span>)</span></span></div><div class="t m0 x3b hd y1d3 ffb fs7 fc0 sc0 ls0 ws0">...</div><div class="t m0 xb h10 y1d5 ffe fs7 fcc sc0 ls0 ws0">The<span class="_ _d"> </span>compiler<span class="_ _26"> </span>applies<span class="_ _d"> </span>this<span class="_ _d"> </span>optimization<span class="_ _d"> </span>only<span class="_ _d"> </span>in<span class="_ _d"> </span>some<span class="_ _d"> </span>cases</div><div class="t m0 xb h10 y1d6 ffe fs7 fcc sc0 ls0 ws0">(tested<span class="_ _d"> </span>with<span class="_ _26"> </span>GCC/Clang<span class="_ _d"> </span>9<span class="_ _d"> </span><span class="ffb">-O3</span>)</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">47/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf34" class="pf w0 h0" data-page-no="34"><div class="pc pc34 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIsUlEQVR42u3ZsUkEQRTH4R3Zh9FiDWJ0FYiIgYFwLRhYj03YgYEliGhgByZ2YHRs4PmSvewyEQ703uL3VTD8J/kx005OzzsAACjj/fXlwAoAAFQjUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAA2GqZaQUAAOqICC+pAACUI1IBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAALAvvQmobHFxaYRf9fb8aAQACmqZaQUAAOqICN/9AACUI1IBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAD+kX5GZx3H0YUBAOxmGIYZndZLKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAItUEAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAA/KRlphUAAKgjIrykAgBQjkgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAAPvVz+Wgn+v18vrGhcG8PD3cGwGAHbTMtAIAAHVEhO9+AADKEakAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAGDe+tXtsRUA/tjH1Z0RAL6zOFu2dnQ4rb66bpomgwAAUMIGCy8o/m/V15UAAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Lo<span class="_ _b"></span>okup<span class="_ _1b"> </span>T<span class="_ _7"></span>able</div><div class="t m0 x1 hb y6d ff1 fs6 fc0 sc0 ls0 ws0">Lo<span class="_ _b"></span>okup<span class="_ _8"> </span>table<span class="_ _f"> </span>(LUT)<span class="_ _f"> </span><span class="ff4">is<span class="_ _c"> </span>a<span class="_ _f"> </span><span class="ff9">memoization<span class="_ _f"> </span></span>technique<span class="_ _f"> </span>which<span class="_ _c"> </span>allows<span class="_ _c"> </span>replacing<span class="_ _c"> </span><span class="ff9">runtime</span></span></div><div class="t m0 x1 hb ye9 ff4 fs6 fc0 sc0 ls0 ws0">computation<span class="_ _c"> </span>with<span class="_ _c"> </span>precomputed<span class="_ _c"> </span>values</div><div class="t m0 x1 h6 y1d7 ff4 fs4 fc0 sc0 ls0 ws0">Example:<span class="_ _1b"> </span>a<span class="_ _c"> </span>function<span class="_ _d"> </span>that<span class="_ _c"> </span>computes<span class="_ _d"> </span>the<span class="_ _c"> </span>loga<span class="_ _3"></span>rithm<span class="_ _c"> </span>base<span class="_ _d"> </span>10<span class="_ _c"> </span>of<span class="_ _d"> </span>a<span class="_ _c"> </span>number<span class="_ _c"> </span>in<span class="_ _d"> </span>the<span class="_ _c"> </span>range<span class="_ _d"> </span>[1-100]</div><div class="t m0 x1 hf y1d8 ff5 fs5 fc9 sc0 ls0 ws0">template<span class="ffc fc8">&lt;</span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">SIZE,<span class="_ _8"> </span></span></span>typename<span class="_ _1b"> </span><span class="fc7">Lambda<span class="ffc fc8">&gt;</span></span></div><div class="t m0 x1 hf y1d9 ff5 fs5 fc9 sc0 ls0 ws0">constexpr<span class="_"> </span><span class="ffc fc0">std<span class="fc8">::</span>array<span class="fc8">&lt;</span></span><span class="fc6">float<span class="ffc fc0">,<span class="_ _8"> </span>SIZE<span class="fc8">&gt;<span class="_ _1b"> </span></span>build(Lambda<span class="_ _1b"> </span>lambda)<span class="_ _8"> </span>{</span></span></div><div class="t m0 xf hf y1da ffc fs5 fc0 sc0 ls0 ws0">std<span class="fc8">::</span>array<span class="fc8">&lt;<span class="ff5 fc6">float</span></span>,<span class="_ _8"> </span>SIZE<span class="fc8">&gt;<span class="_ _1b"> </span></span>array{};</div><div class="t m0 xf hf y1db ff5 fs5 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffc fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">i<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span>0</span>;<span class="_ _1b"> </span>i<span class="_ _1b"> </span><span class="fc8">&lt;<span class="_ _8"> </span></span>SIZE;<span class="_ _1b"> </span>i<span class="fc8">++</span>)</span></span></div><div class="t m0 x15 hf y1dc ffc fs5 fc0 sc0 ls0 ws0">array[i]<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>lambda(i);</div><div class="t m0 xf hf y1dd ff5 fs5 fc9 sc0 ls0 ws0">return<span class="_"> </span><span class="ffc fc0">array;</span></div><div class="t m0 x1 hf y1de ffc fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hf y1df ff5 fs5 fc6 sc0 ls0 ws0">float<span class="_"> </span><span class="ffc fc0">log10(</span>int<span class="_"> </span><span class="ffc fc0">value)<span class="_ _1b"> </span>{</span></div><div class="t m0 xf hf y1e0 ff5 fs5 fc9 sc0 ls0 ws0">constexpr<span class="_"> </span>auto<span class="_"> </span><span class="ffc fc0">lamba<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span></span>[](</span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">i)<span class="_ _1b"> </span>{<span class="_ _1b"> </span></span></span>return<span class="_"> </span><span class="ffc fc0">std<span class="fc8">::</span>log10f((</span><span class="fc6">float<span class="ffc fc0">)<span class="_ _1b"> </span>i);<span class="_ _8"> </span>};</span></span></div><div class="t m0 xf hf y1e1 ff5 fs5 fc9 sc0 ls0 ws0">static<span class="_"> </span>constexpr<span class="_"> </span>auto<span class="_"> </span><span class="ffc fc0">table<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span></span>build<span class="fc8">&lt;100&gt;</span>(lambda);</span></div><div class="t m0 xf hf y1e2 ff5 fs5 fc9 sc0 ls0 ws0">return<span class="_"> </span><span class="ffc fc0">table[value];</span></div><div class="t m0 x1 hf y1e3 ffc fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 xb hd y1e4 ffb fs7 fcc sc0 ls0 ws0">Make<span class="_ _9"> </span>your<span class="_ _9"> </span>lookup<span class="_ _21"> </span>table<span class="_ _9"> </span>do<span class="_ _21"> </span>more</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">48/93</div><a class="l" href="https://commaok.xyz/post/lookup_tables/"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:0.687000px;width:143.213000px;height:13.444000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf35" class="pf w0 h0" data-page-no="35"><div class="pc pc35 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Lo<span class="_ _3"></span>w-Level<span class="_ _1b"> </span>Optimizations</div><div class="t m0 x1 hb y1e5 ff1 fs6 fc0 sc0 ls0 ws0">Collection<span class="_ _f"> </span>of<span class="_ _8"> </span>low-level<span class="_ _f"> </span>implementations/optimization<span class="_ _8"> </span>of<span class="_ _8"> </span>common<span class="_ _f"> </span>op<span class="_ _0"></span>erations:</div><div class="t m0 xb hb y1e6 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Bit<span class="_ _8"> </span>T<span class="_ _7"></span>widdling<span class="_ _f"> </span>Hacks</span></div><div class="t m0 x36 h11 y1e7 ff6 fs6 fc0 sc0 ls0 ws0">graphics.stanford.edu/<span class="fff"></span>seander/bithacks.html</div><div class="t m0 xb hb y1e8 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">The<span class="_ _8"> </span>Aggregate<span class="_ _f"> </span>Magic<span class="_ _8"> </span>Algorithms</span></div><div class="t m0 x36 h11 y1e9 ff6 fs6 fc0 sc0 ls0 ws0">aggregate.org/MAGIC</div><div class="t m0 xb hb y1ea ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Hack<span class="_ _3"></span>ers<span class="_ _8"> </span>Delight<span class="_ _8"> </span>Bo<span class="_ _b"></span>ok</span></div><div class="t m0 x36 h11 y1eb ff6 fs6 fc0 sc0 ls0 ws0">www.hackersdelight.org</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">49/93</div><a class="l" href="https://graphics.stanford.edu/~seander/bithacks.html"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:141.663000px;width:256.750000px;height:11.993000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="http://aggregate.org/MAGIC/"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:98.545000px;width:110.811000px;height:11.992000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="http://www.hackersdelight.org/"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:55.427000px;width:127.993000px;height:10.952000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf36" class="pf w0 h0" data-page-no="36"><div class="pc pc36 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIXklEQVR42u3YsQ2CQBiG4TvDhdIZCJUTGENt4mYu4TgUDMEGVpRec3bM8EOeZ4SvevPl8T4lAAAIY13mixUAAIhGpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAsMu1VisAABBHKcWTCgBAOCIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRagIAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACLVBAAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAADn0W3vwQoAB/J9fowAnNvt8cr52rftl1JrzSAAAITwB9rOFAQtykc9AAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Lo<span class="_ _3"></span>w-Level<span class="_ _1b"> </span>Information</div><div class="t m0 x1 hb y1ec ff1 fs6 fc0 sc0 ls0 ws0">The<span class="_ _f"> </span>same<span class="_ _8"> </span>instruction/op<span class="_ _b"></span>eration<span class="_ _8"> </span>may<span class="_ _f"> </span>take<span class="_ _c"> </span>different<span class="_ _8"> </span>clo<span class="_ _0"></span>ck-cycles<span class="_ _c"> </span>on<span class="_ _8"> </span>different</div><div class="t m0 x1 hb y1ed ff1 fs6 fc0 sc0 ls0 ws0">a<span class="_ _3"></span>rchitectures/CPU<span class="_ _8"> </span>type</div><div class="t m0 xb hb y1ee ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Agner<span class="_ _8"> </span>F<span class="_ _3"></span>og<span class="_ _8"> </span>-<span class="_ _8"> </span>Instruction<span class="_ _8"> </span>tables<span class="_ _c"> </span><span class="ff4">(latencies,<span class="_ _c"> </span>throughputs)</span></span></div><div class="t m0 x36 h11 y1ef ff6 fs6 fc0 sc0 ls0 ws0">www.agner.org/optimize/instruction_tables.pdf</div><div class="t m0 xb hb y1f0 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Latency<span class="_ _7"></span>,<span class="_ _f"> </span>Throughput,<span class="_ _8"> </span>and<span class="_ _8"> </span>Po<span class="_ _3"></span>rt<span class="_ _f"> </span>Usage<span class="_ _8"> </span>Information</span></div><div class="t m0 x36 h11 y1f1 ff6 fs6 fc0 sc0 ls0 ws0">uops.info/table.html</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">50/93</div><a class="l" href="http://www.agner.org/optimize/instruction_tables.pdf"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:112.313000px;width:259.719000px;height:11.993000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="http://uops.info/table.html"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:69.195000px;width:116.538000px;height:11.993000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf37" class="pf w0 h0" data-page-no="37"><div class="pc pc37 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x8 h2 y135 ff1 fs0 fc0 sc0 ls0 ws0">Control<span class="_ _1"> </span>Flo<span class="_ _7"></span>w</div><a class="l" href="#pf37" data-dest-detail='[55,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:137.252000px;width:148.064000px;height:19.206000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf38" class="pf w0 h0" data-page-no="38"><div class="pc pc38 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIXklEQVR42u3YsQ3CMBRFUTuKRZkZolRMgBA1EptliYxDwRBsQJUSN06XGb6sc0Z41dXLy+2RAAAgjO/nPVgBAIBoRCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAAKdca7UCAABxlFI8qQAAhCNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqSYAAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSTQAAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgDQj3FfZysA9OH33IwAdOB6f+U8Xdr+T6m1ZhAAAEI4AKpKFAQ258TQAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Control<span class="_ _1b"> </span>Flo<span class="_ _3"></span>w</div><div class="t m0 x3c h8 y1f2 ff1 fs2 fc3 sc0 ls0 ws0">Computation<span class="_ _e"> </span>is<span class="_ _e"> </span>faster<span class="_ _6"> </span>than<span class="_ _e"> </span>decision</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">51/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf39" class="pf w0 h0" data-page-no="39"><div class="pc pc39 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Branches<span class="_ _50"> </span>1/2</div><div class="t m0 x1 hb y1f3 ff1 fs6 fc0 sc0 ls0 ws0">Pip<span class="_ _b"></span>elines<span class="_ _c"> </span><span class="ff4">are<span class="_ _c"> </span>an<span class="_ _c"> </span>essential<span class="_ _f"> </span>element<span class="_ _c"> </span>in<span class="_ _f"> </span>mo<span class="_ _b"></span>dern<span class="_ _c"> </span>processors.<span class="_ _9"> </span>Some<span class="_ _c"> </span>processors<span class="_ _c"> </span>have<span class="_ _c"> </span>up<span class="_ _f"> </span>to</span></div><div class="t m0 x1 hb y1f4 ff4 fs6 fc0 sc0 ls0 ws0">20<span class="_ _c"> </span>pip<span class="_ _b"></span>eline<span class="_ _f"> </span>stages<span class="_ _c"> </span>(14/16<span class="_ _f"> </span>t<span class="_ _3"></span>ypically)</div><div class="t m0 x1 hb y1f5 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _c"> </span>downside<span class="_ _c"> </span>to<span class="_ _c"> </span>long<span class="_ _c"> </span>pip<span class="_ _b"></span>elines<span class="_ _f"> </span>includes<span class="_ _c"> </span>the<span class="_ _f"> </span>danger<span class="_ _c"> </span>of<span class="_ _9"> </span><span class="ff1">pip<span class="_ _b"></span>eline<span class="_ _8"> </span>stalls<span class="_ _c"> </span></span>that<span class="_ _f"> </span>w<span class="_ _3"></span>aste<span class="_ _f"> </span>CPU</div><div class="t m0 x1 hb y1f6 ff4 fs6 fc0 sc0 ls0 ws0">time,<span class="_ _c"> </span>and<span class="_ _c"> </span>the<span class="_ _f"> </span>time<span class="_ _c"> </span>it<span class="_ _f"> </span>takes<span class="_ _c"> </span>to<span class="_ _c"> </span>reload<span class="_ _c"> </span>the<span class="_ _f"> </span>pip<span class="_ _b"></span>eline<span class="_ _c"> </span>on<span class="_ _f"> </span><span class="ff1">conditional<span class="_ _8"> </span>b<span class="_ _3"></span>ranch<span class="_ _f"> </span><span class="ff4">op<span class="_ _b"></span>erations</span></span></div><div class="t m0 x1 hb y145 ff4 fs6 fc0 sc0 ls0 ws0">(<span class="_ _26"> </span><span class="ff6">if<span class="_ _d"> </span></span>,<span class="_ _10"> </span><span class="ff6">while<span class="_ _d"> </span></span>,<span class="_ _10"> </span><span class="ff6">for<span class="_ _26"> </span></span>)</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">52/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf3a" class="pf w0 h0" data-page-no="3a"><div class="pc pc3a w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Branches<span class="_ _50"> </span>2/2</div><div class="t m0 xb hb y1f7 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _10"> </span><span class="ff5">switch<span class="_ _10"> </span></span>statements<span class="_ _c"> </span>to<span class="_ _c"> </span>multiple<span class="_ _10"> </span><span class="ff5">if</span></span></div><div class="t m0 x15 h6 y1f8 ff4 fs4 fc0 sc0 ls0 ws0">-<span class="_ _6"> </span>If<span class="_ _d"> </span>the<span class="_ _c"> </span>compiler<span class="_ _d"> </span>do<span class="_ _b"></span>es<span class="_ _c"> </span>not<span class="_ _d"> </span>use<span class="_ _c"> </span>a<span class="_ _d"> </span>jump-table,<span class="_ _c"> </span>the<span class="_ _d"> </span>cases<span class="_ _c"> </span>are<span class="_ _d"> </span>evaluated<span class="_ _d"> </span>in<span class="_ _c"> </span>o<span class="_ _3"></span>rder<span class="_ _c"> </span>of</div><div class="t m0 x1b h6 y1f9 ff4 fs4 fc0 sc0 ls0 ws0">app<span class="_ _b"></span>ea<span class="_ _3"></span>rance<span class="_ _c"> </span><span class="fff">→<span class="_ _d"> </span></span>the<span class="_ _c"> </span>most<span class="_ _d"> </span>frequent<span class="_ _c"> </span>cases<span class="_ _d"> </span>should<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _d"> </span>placed<span class="_ _c"> </span>b<span class="_ _b"></span>efo<span class="_ _3"></span>re</div><div class="t m0 x15 h6 y1fa ff4 fs4 fc0 sc0 ls0 ws0">-<span class="_ _6"> </span>Some<span class="_ _d"> </span>compilers<span class="_ _d"> </span>(e.g.<span class="_ _1b"> </span><span class="ff6">clang</span>)<span class="_ _d"> </span>a<span class="_ _3"></span>re<span class="_ _d"> </span>able<span class="_ _d"> </span>to<span class="_ _d"> </span>translate<span class="_ _d"> </span>a<span class="_ _d"> </span>sequence<span class="_ _d"> </span>of<span class="_ _2d"> </span><span class="ff6">if<span class="_ _12"> </span></span>into<span class="_ _26"> </span>a<span class="_ _12"> </span><span class="ff6">switch</span></div><div class="t m0 xb hb y1fb ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">In<span class="_ _c"> </span>general,<span class="_ _f"> </span>a<span class="_ _c"> </span><span class="ff9">branch<span class="_ _c"> </span></span>has<span class="_ _f"> </span>negligible<span class="_ _c"> </span>effect<span class="_ _c"> </span>on<span class="_ _f"> </span>p<span class="_ _b"></span>erformance<span class="_ _c"> </span>if<span class="_ _c"> </span>it<span class="_ _c"> </span>is<span class="_ _f"> </span>not<span class="_ _c"> </span>taken</span></div><div class="t m0 xb hb y1fc ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Not<span class="_ _c"> </span>all<span class="_ _f"> </span>control<span class="_ _c"> </span>flow<span class="_ _c"> </span>instructions<span class="_ _c"> </span>(or<span class="_ _c"> </span>b<span class="_ _3"></span>ranches)<span class="_ _c"> </span>are<span class="_ _c"> </span>translated<span class="_ _c"> </span>into<span class="_ _10"> </span><span class="ff6">jump</span></span></div><div class="t m0 x36 hb y1fd ff4 fs6 fc0 sc0 ls0 ws0">instructions.<span class="_ _21"> </span>If<span class="_ _c"> </span>the<span class="_ _c"> </span>co<span class="_ _b"></span>de<span class="_ _f"> </span>in<span class="_ _c"> </span>the<span class="_ _f"> </span>branch<span class="_ _c"> </span>is<span class="_ _c"> </span>small,<span class="_ _c"> </span>the<span class="_ _f"> </span>compiler<span class="_ _c"> </span>could<span class="_ _f"> </span>optimize<span class="_ _c"> </span>it<span class="_ _f"> </span>in<span class="_ _c"> </span>a</div><div class="t m0 x36 hb y1fe ff4 fs6 fc0 sc0 ls0 ws0">conditional<span class="_ _c"> </span>instruction,<span class="_ _c"> </span>e.g.<span class="_ _a"> </span><span class="ff6">ccmovl</span></div><div class="t m0 x30 h10 y1ff ff1a fs7 fcc sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ffb">Branch<span class="_ _9"> </span>predictor:<span class="_ _20"> </span>How<span class="_ _9"> </span>many<span class="_ _9"> </span>ifs<span class="_ _21"> </span>are<span class="_ _9"> </span>too<span class="_ _21"> </span>many?</span></div><div class="t m0 x30 h10 y200 ff1a fs7 fcc sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ffb">Is<span class="_ _9"> </span>this<span class="_ _21"> </span>a<span class="_ _9"> </span>branch?</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">53/93</div><a class="l" href="https://blog.cloudflare.com/branch-predictor/"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:20.923000px;width:223.238000px;height:10.033000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://bartwronski.com/2021/01/18/is-this-a-branch/"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:8.320000px;width:82.018000px;height:7.373000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf3b" class="pf w0 h0" data-page-no="3b"><div class="pc pc3b w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Ha<span class="_ _3"></span>rdw<span class="_ _3"></span>are<span class="_ _8"> </span>Features<span class="_ _8"> </span>to<span class="_ _1b"> </span>Mitigate<span class="_ _9"> </span>Branch<span class="_ _1b"> </span>Overhead</div><div class="t m0 xb hb y136 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Branch<span class="_ _8"> </span>p<span class="_ _3"></span>rediction<span class="ff4">:<span class="_ _21"> </span>technique<span class="_ _c"> </span>to<span class="_ _f"> </span>guess<span class="_ _c"> </span>which<span class="_ _f"> </span>wa<span class="_ _3"></span>y<span class="_ _c"> </span>a<span class="_ _c"> </span>branch<span class="_ _c"> </span>tak<span class="_ _3"></span>es.<span class="_ _21"> </span>It<span class="_ _f"> </span>requires</span></span></div><div class="t m0 x36 hb y137 ff4 fs6 fc0 sc0 ls0 ws0">ha<span class="_ _3"></span>rdwa<span class="_ _3"></span>re<span class="_ _c"> </span>supp<span class="_ _b"></span>ort,<span class="_ _d"> </span>and<span class="_ _f"> </span>it<span class="_ _c"> </span>is<span class="_ _c"> </span>generically<span class="_ _c"> </span>based<span class="_ _c"> </span>on<span class="_ _c"> </span>dynamic<span class="_ _c"> </span>history<span class="_ _c"> </span>of<span class="_ _c"> </span>co<span class="_ _b"></span>de<span class="_ _c"> </span>executing</div><div class="t m0 xb hb y201 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Branch<span class="_ _8"> </span>p<span class="_ _3"></span>redication<span class="ff4">:<span class="_ _21"> </span>a<span class="_ _c"> </span>conditional<span class="_ _f"> </span>branch<span class="_ _c"> </span>is<span class="_ _c"> </span>substituted<span class="_ _c"> </span>by<span class="_ _c"> </span>a<span class="_ _c"> </span>sequence<span class="_ _c"> </span>of</span></span></div><div class="t m0 x36 hb y202 ff4 fs6 fc0 sc0 ls0 ws0">instructions<span class="_ _c"> </span>from<span class="_ _c"> </span>b<span class="_ _0"></span>oth<span class="_ _c"> </span>paths<span class="_ _c"> </span>of<span class="_ _c"> </span>the<span class="_ _f"> </span>b<span class="_ _3"></span>ranch.<span class="_ _21"> </span>Only<span class="_ _f"> </span>the<span class="_ _c"> </span>instructions<span class="_ _f"> </span>asso<span class="_ _b"></span>ciated<span class="_ _c"> </span>to<span class="_ _f"> </span>a</div><div class="t m0 x36 hb y203 ff9 fs6 fc0 sc0 ls0 ws0">p<span class="_ _3"></span>redicate<span class="_ _1b"> </span><span class="ff4">(b<span class="_ _b"></span>o<span class="_ _b"></span>olean<span class="_ _f"> </span>value),<span class="_ _c"> </span>that<span class="_ _c"> </span>represents<span class="_ _c"> </span>the<span class="_ _c"> </span>direction<span class="_ _f"> </span>of<span class="_ _c"> </span>the<span class="_ _f"> </span>b<span class="_ _3"></span>ranch,<span class="_ _f"> </span>a<span class="_ _3"></span>re<span class="_ _f"> </span>actually</span></div><div class="t m0 x36 hb y204 ff4 fs6 fc0 sc0 ls0 ws0">executed</div><div class="t m0 x36 hf y205 ff5 fs5 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffc fc0">x<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>(condition)<span class="_ _1b"> </span><span class="fc8">?<span class="_ _8"> </span></span>A[i]<span class="_ _1b"> </span><span class="fc8">:<span class="_ _1b"> </span></span>B[i];</span></div><div class="t m0 x36 hf y206 ffc fs5 fc0 sc0 ls0 ws0">P<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>(condition)<span class="_ _1b"> </span><span class="ffa fc5">//<span class="_ _8"> </span>P:<span class="_ _1b"> </span>predicate</span></div><div class="t m0 x36 hf y207 ffc fs5 fc0 sc0 ls0 ws0">P<span class="_ _8"> </span>x<span class="_ _1b"> </span>=<span class="_ _1b"> </span>A[i];</div><div class="t m0 x36 hf y208 ffc fs5 fc8 sc0 ls0 ws0">!<span class="fc0">P<span class="_ _8"> </span>x<span class="_ _1b"> </span></span>=<span class="_ _1b"> </span><span class="fc0">B[i];</span></div><div class="t m0 xb hb y209 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Sp<span class="_ _b"></span>eculative<span class="_ _8"> </span>execution<span class="ff4">:<span class="_ _21"> </span>execute<span class="_ _c"> </span>b<span class="_ _b"></span>oth<span class="_ _f"> </span>sides<span class="_ _c"> </span>of<span class="_ _f"> </span>the<span class="_ _c"> </span>conditional<span class="_ _f"> </span>b<span class="_ _3"></span>ranch<span class="_ _f"> </span>to<span class="_ _c"> </span>b<span class="_ _b"></span>etter</span></span></div><div class="t m0 x36 hb y20a ff4 fs6 fc0 sc0 ls0 ws0">utilize<span class="_ _c"> </span>the<span class="_ _c"> </span>computer<span class="_ _f"> </span>resources<span class="_ _c"> </span>and<span class="_ _f"> </span>commit<span class="_ _c"> </span>the<span class="_ _f"> </span>results<span class="_ _c"> </span>asso<span class="_ _b"></span>ciated<span class="_ _f"> </span>to<span class="_ _c"> </span>the<span class="_ _f"> </span>branch</div><div class="t m0 x36 hb y20b ff4 fs6 fc0 sc0 ls0 ws0">tak<span class="_ _3"></span>en</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">54/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf3c" class="pf w0 h0" data-page-no="3c"><div class="pc pc3c w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Branch<span class="_ _1b"> </span>Hints<span class="_ _1b"> </span>-<span class="_ _1b"> </span><span class="ff5">[[likely]]<span class="_"> </span>/<span class="_"> </span>[[unlikely]]</span></div><div class="t m0 x1 hb y20c ff4 fs6 fcd sc0 ls0 ws0">C++20<span class="_ _10"> </span><span class="ff6 fc7">[[likely]]<span class="_ _10"> </span></span><span class="fc0">and<span class="_ _10"> </span><span class="ff6 fc7">[[unlikely]]<span class="_ _10"> </span></span>p<span class="_ _3"></span>rovide<span class="_ _c"> </span>a<span class="_ _f"> </span>hint<span class="_ _c"> </span>to<span class="_ _f"> </span>the<span class="_ _c"> </span>compiler<span class="_ _f"> </span>to<span class="_ _c"> </span>optimize</span></div><div class="t m0 x1 hb y20d ff4 fs6 fc0 sc0 ls0 ws0">a<span class="_ _c"> </span>conditional<span class="_ _c"> </span>statement,<span class="_ _f"> </span>such<span class="_ _c"> </span>as<span class="_ _10"> </span><span class="ff6">while<span class="_ _d"> </span></span>,<span class="_ _10"> </span><span class="ff6">for<span class="_ _26"> </span></span>,<span class="_ _10"> </span><span class="ff6">if</span></div><div class="t m0 x1 hd y20e ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span>300</span>;<span class="_ _9"> </span>i<span class="fc8">++</span>)<span class="_ _21"> </span>{</span></div><div class="t m0 xd hd y20f ffb fs7 fc0 sc0 ls0 ws0">[[unlikely]]<span class="_ _9"> </span><span class="ff5 fc9">if<span class="_"> </span></span>(rand()<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span>10</span>)</div><div class="t m0 x3d hd y210 ff5 fs7 fc9 sc0 ls0 ws0">return<span class="_"> </span><span class="ffb">false<span class="fc0">;</span></span></div><div class="t m0 x1 hd y211 ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hd y212 ff5 fs7 fc9 sc0 ls0 ws0">switch<span class="_"> </span><span class="ffb fc0">(value)<span class="_ _9"> </span>{</span></div><div class="t m0 x30 hd y213 ffb fs7 fc0 sc0 ls0 ws0">[[likely]]<span class="_ _14"> </span><span class="ff5 fc9">case<span class="_"> </span><span class="ffd fca">&apos;<span class="ffb">A</span>&apos;</span></span>:<span class="_ _9"> </span><span class="ff5 fc9">return<span class="_"> </span></span><span class="fc8">2</span>;</div><div class="t m0 x30 hd y214 ffb fs7 fc0 sc0 ls0 ws0">[[unlikely]]<span class="_ _9"> </span><span class="ff5 fc9">case<span class="_"> </span><span class="ffd fca">&apos;<span class="ffb">B</span>&apos;</span></span>:<span class="_ _9"> </span><span class="ff5 fc9">return<span class="_"> </span></span><span class="fc8">4</span>;</div><div class="t m0 x1 hd y215 ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">55/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf3d" class="pf w0 h0" data-page-no="3d"><div class="pc pc3d w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Signed/Unsigned<span class="_ _1b"> </span>Integers</div><div class="t m0 xb hb y136 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _f"> </span><span class="ff1">signed<span class="_ _8"> </span>integer<span class="_ _c"> </span></span>for<span class="_ _c"> </span><span class="ff1">lo<span class="_ _0"></span>op<span class="_ _f"> </span>indexing</span>.<span class="_ _21"> </span>The<span class="_ _c"> </span>compiler<span class="_ _c"> </span>optimizes<span class="_ _f"> </span>more</span></div><div class="t m0 x36 hb y137 ff4 fs6 fc0 sc0 ls0 ws0">aggressively<span class="_ _c"> </span>such<span class="_ _c"> </span>lo<span class="_ _0"></span>ops<span class="_ _c"> </span>because<span class="_ _f"> </span>integer<span class="_ _c"> </span>overflow<span class="_ _c"> </span>is<span class="_ _c"> </span>not<span class="_ _f"> </span>defined.<span class="_ _21"> </span>Unsigned<span class="_ _c"> </span>lo<span class="_ _b"></span>op</div><div class="t m0 x36 hb y138 ff4 fs6 fc0 sc0 ls0 ws0">indexing<span class="_ _c"> </span>generates<span class="_ _c"> </span>complex<span class="_ _f"> </span>intermediate<span class="_ _c"> </span>expressions,<span class="_ _c"> </span>esp<span class="_ _b"></span>ecially<span class="_ _c"> </span>for<span class="_ _c"> </span>nested<span class="_ _c"> </span>lo<span class="_ _b"></span>ops,</div><div class="t m0 x36 hb y216 ff4 fs6 fc0 sc0 ls0 ws0">that<span class="_ _c"> </span>the<span class="_ _c"> </span>compiler<span class="_ _f"> </span>could<span class="_ _c"> </span>not<span class="_ _f"> </span>solve</div><div class="t m0 xb hb y203 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _f"> </span><span class="ff1">32-bit<span class="_ _8"> </span>signed<span class="_ _f"> </span>integer<span class="_ _f"> </span></span>or<span class="_ _c"> </span><span class="ff1">64-bit<span class="_ _8"> </span>integer<span class="_ _f"> </span></span>for<span class="_ _c"> </span><span class="ff1">any<span class="_ _8"> </span>op<span class="_ _b"></span>eration<span class="_ _8"> </span>that<span class="_ _8"> </span>is</span></span></div><div class="t m0 x36 hb y204 ff1 fs6 fc0 sc0 ls0 ws0">translated<span class="_ _f"> </span>to<span class="_ _8"> </span>64-bit<span class="ff4">.<span class="_ _21"> </span>The<span class="_ _f"> </span>most<span class="_ _c"> </span>common<span class="_ _f"> </span>is<span class="_ _c"> </span><span class="ff9">arra<span class="_ _3"></span>y<span class="_ _c"> </span>indexing<span class="ff4">.<span class="_ _21"> </span>The<span class="_ _c"> </span>subscript</span></span></span></div><div class="t m0 x36 hb y217 ff4 fs6 fc0 sc0 ls0 ws0">op<span class="_ _b"></span>erato<span class="_ _3"></span>r<span class="_ _f"> </span>implicitly<span class="_ _c"> </span>defines<span class="_ _f"> </span>its<span class="_ _c"> </span>parameter<span class="_ _c"> </span>as<span class="_ _10"> </span><span class="ff6">size_t<span class="_ _26"> </span></span>.<span class="_ _21"> </span>Any<span class="_ _f"> </span>indexing<span class="_ _c"> </span>op<span class="_ _b"></span>eration<span class="_ _f"> </span>with</div><div class="t m0 x36 hb y218 ff4 fs6 fc0 sc0 ls0 ws0">32-bit<span class="_ _c"> </span>unsigned<span class="_ _c"> </span>integer<span class="_ _f"> </span>requires<span class="_ _c"> </span>the<span class="_ _f"> </span>compiler<span class="_ _c"> </span>to<span class="_ _f"> </span>enforce<span class="_ _c"> </span>wrap-a<span class="_ _3"></span>round<span class="_ _c"> </span>b<span class="_ _b"></span>ehavior,</div><div class="t m0 x36 hb y219 ff4 fs6 fc0 sc0 ls0 ws0">e.g.<span class="_ _21"> </span>b<span class="_ _3"></span>y<span class="_ _f"> </span>moving<span class="_ _c"> </span>the<span class="_ _c"> </span>variable<span class="_ _c"> </span>to<span class="_ _c"> </span>a<span class="_ _f"> </span>32-bit<span class="_ _c"> </span>register</div><div class="t m0 x36 hd y21a ff5 fs7 fc6 sc0 ls0 ws0">unsigned<span class="_"> </span><span class="ffb fc0">v<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>...;</span></div><div class="t m0 x36 hd y21b ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>some<span class="_ _9"> </span>operations<span class="_ _21"> </span>on<span class="_ _9"> </span>v</div><div class="t m0 x36 hd y21c ffb fs7 fc0 sc0 ls0 ws0">array[v];</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">56/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf3e" class="pf w0 h0" data-page-no="3e"><div class="pc pc3e w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAImUlEQVR42u3ZsU3DYBCGYf/IJyorM6BUTIAQNVJWoMg8WYINUjADUgqGYAOqyAXhGqdLQ4ei5CyeZwFbn5tX57Z8eOoAAKCMz4/djRUAAKhGpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAcNIy0woAANQRES6pAACUI1IBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAD+kd4EQBHjOF7mQcMwWBugOJdUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAwby0zrQAAQB0R4ZIKAEA5IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJFqAgAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAAGfTz+VFvw+H1cvaB4N5eX/bGgGAP2iZaQUAAOqICL/7AQAoR6QCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAACuqd9v7qwAwFV8Pb8aAfjt/nHV2uJ22v903TRNBgEAoIQjBY0jAFz+aLYAAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Lo<span class="_ _b"></span>ops</div><div class="t m0 xb hb y49 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _f"> </span><span class="ff1">squa<span class="_ _3"></span>re<span class="_ _8"> </span>brack<span class="_ _3"></span>ets<span class="_ _c"> </span><span class="ff4">syntax<span class="_ _10"> </span><span class="ff6">[]<span class="_ _10"> </span></span>over<span class="_ _c"> </span>p<span class="_ _b"></span>ointer<span class="_ _f"> </span>a<span class="_ _3"></span>rithmetic<span class="_ _f"> </span>op<span class="_ _b"></span>erations<span class="_ _c"> </span>for<span class="_ _c"> </span>a<span class="_ _3"></span>rray</span></span></span></div><div class="t m0 x36 hb y21d ff4 fs6 fc0 sc0 ls0 ws0">access<span class="_ _c"> </span>to<span class="_ _c"> </span>facilitate<span class="_ _f"> </span>compiler<span class="_ _c"> </span>lo<span class="_ _0"></span>op<span class="_ _c"> </span>optimizations<span class="_ _c"> </span>(e.g.<span class="_ _21"> </span>p<span class="_ _b"></span>olyhedral<span class="_ _c"> </span>lo<span class="_ _b"></span>op</div><div class="t m0 x36 hb y21e ff4 fs6 fc0 sc0 ls0 ws0">transfo<span class="_ _3"></span>rmations)</div><div class="t m0 xb hb y21f ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">Range-based<span class="_ _9"> </span><span class="ff4">lo<span class="_ _b"></span>op<span class="_ _c"> </span>could<span class="_ _f"> </span>provide<span class="_ _c"> </span>mino<span class="_ _3"></span>r<span class="_ _c"> </span>p<span class="_ _0"></span>erfo<span class="_ _3"></span>rmance<span class="_ _c"> </span>improvements<span class="_ _c"> </span>fo<span class="_ _3"></span>r<span class="_ _c"> </span>small<span class="_ _f"> </span>lo<span class="_ _b"></span>ops</span></span></div><div class="t m0 x36 hb y220 ff4 fs6 fc0 sc0 ls0 ws0">that<span class="_ _c"> </span>iterate<span class="_ _c"> </span>over<span class="_ _f"> </span>a<span class="_ _c"> </span>container<span class="_ _f"> </span><span class="ff1b">1</span></div><div class="t m0 xb hb y221 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">On<span class="_ _c"> </span>the<span class="_ _f"> </span>other<span class="_ _c"> </span>hand,<span class="_ _f"> </span><span class="ff9">range-based<span class="_ _c"> </span>lo<span class="_ _b"></span>ops<span class="_ _9"> </span></span>and<span class="_ _c"> </span><span class="ff9">iterators<span class="_ _1b"> </span></span>could<span class="_ _c"> </span>inhibit<span class="_ _f"> </span>many</span></div><div class="t m0 x36 hb y222 ff4 fs6 fc0 sc0 ls0 ws0">optimizations<span class="_ _c"> </span>such<span class="_ _c"> </span>as<span class="_ _f"> </span>lo<span class="_ _b"></span>op<span class="_ _f"> </span>unrolling<span class="_ _c"> </span>and<span class="_ _f"> </span>vecto<span class="_ _3"></span>rization</div><div class="t m0 xb h10 y223 ff1b fs7 fcc sc0 ls0 ws0">1<span class="_ _d"> </span><span class="ffb">The<span class="_ _9"> </span>Little<span class="_ _9"> </span>Things:<span class="_ _20"> </span>Everyday<span class="_ _9"> </span>efficiencies</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">57/93</div><a class="l" href="https://codingnest.com/the-little-things-everyday-efficiencies/amp/?__twitter_impression=true"><div class="d m1" style="border-style:none;position:absolute;left:41.339000px;bottom:6.463000px;width:194.993000px;height:13.444000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf3f" class="pf w0 h0" data-page-no="3f"><div class="pc pc3f w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Lo<span class="_ _b"></span>op<span class="_ _1b"> </span>Hoisting</div><div class="t m0 x1 hb y6d ff1 fs6 fc0 sc0 ls0 ws0">Lo<span class="_ _b"></span>op<span class="_ _8"> </span>Hoisting<span class="ff4">,<span class="_ _c"> </span>also<span class="_ _f"> </span>called<span class="_ _c"> </span><span class="ff9">lo<span class="_ _b"></span>op-invariant<span class="_ _c"> </span>co<span class="_ _b"></span>de<span class="_ _c"> </span>motion</span>,<span class="_ _c"> </span>consists<span class="_ _f"> </span>of<span class="_ _c"> </span>moving<span class="_ _f"> </span>statements</span></div><div class="t m0 x1 hb ye9 ff4 fs6 fc0 sc0 ls0 ws0">o<span class="_ _3"></span>r<span class="_ _f"> </span>exp<span class="_ _3"></span>ressions<span class="_ _f"> </span>outside<span class="_ _c"> </span>the<span class="_ _f"> </span>b<span class="_ _b"></span>o<span class="_ _b"></span>dy<span class="_ _c"> </span>of<span class="_ _f"> </span>a<span class="_ _c"> </span>lo<span class="_ _0"></span>op<span class="_ _c"> </span><span class="ff9">without<span class="_ _c"> </span>affecting<span class="_ _c"> </span>the<span class="_ _f"> </span>semantics<span class="_ _1b"> </span></span>of<span class="_ _f"> </span>the</div><div class="t m0 x1 hb y101 ff4 fs6 fc0 sc0 ls0 ws0">p<span class="_ _3"></span>rogram</div><div class="t m0 x1 hd y224 ffb fs7 fc0 sc0 ls0 ws0">Base<span class="_ _9"> </span>case:</div><div class="t m0 x1 hd y225 ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span>100</span>;<span class="_ _9"> </span>i<span class="fc8">++</span>)</span></span></div><div class="t m0 xd hd y226 ffb fs7 fc0 sc0 ls0 ws0">a[i]<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>x<span class="_ _21"> </span><span class="fc8">+<span class="_ _9"> </span></span>y;</div><div class="t m0 x3e hd y224 ffb fs7 fc0 sc0 ls0 ws0">Better:</div><div class="t m0 x3e hd y227 ffb fs7 fc0 sc0 ls0 ws0">v<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>x<span class="_ _21"> </span><span class="fc8">+<span class="_ _9"> </span></span>y;</div><div class="t m0 x3e hd y225 ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span>100</span>;<span class="_ _9"> </span>i<span class="fc8">++</span>)</span></span></div><div class="t m0 x3f hd y226 ffb fs7 fc0 sc0 ls0 ws0">a[i]<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>v;</div><div class="t m0 x1 hb y228 ff4 fs6 fc0 sc0 ls0 ws0">Lo<span class="_ _b"></span>op<span class="_ _c"> </span>hoisting<span class="_ _f"> </span>is<span class="_ _c"> </span>also<span class="_ _f"> </span>imp<span class="_ _b"></span>o<span class="_ _3"></span>rtant<span class="_ _f"> </span>in<span class="_ _c"> </span>the<span class="_ _f"> </span>evaluation<span class="_ _c"> </span>of<span class="_ _f"> </span>lo<span class="_ _b"></span>op<span class="_ _c"> </span>conditions</div><div class="t m0 x1 hd y229 ffb fs7 fc0 sc0 ls0 ws0">Base<span class="_ _9"> </span>case:</div><div class="t m0 x1 hd y22a ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>&quot;x&quot;<span class="_ _9"> </span>never<span class="_ _21"> </span>changes</div><div class="t m0 x1 hd y22b ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>f(x);<span class="_ _9"> </span>i<span class="fc8">++</span>)</span></span></div><div class="t m0 x27 hd y22c ffb fs7 fc0 sc0 ls0 ws0">a[i]<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>y;</div><div class="t m0 x3e hd y229 ffb fs7 fc0 sc0 ls0 ws0">Better:</div><div class="t m0 x3e hd y22a ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffb fc0">limit<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>f(x);</span></div><div class="t m0 x3e hd y22b ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>limit;<span class="_ _9"> </span>i<span class="fc8">++</span>)</span></span></div><div class="t m0 x40 hd y22c ffb fs7 fc0 sc0 ls0 ws0">a[i]<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>y;</div><div class="t m0 x1 hb y22d ff4 fs6 fc0 sc0 ls0 ws0">In<span class="_ _c"> </span>the<span class="_ _c"> </span>wo<span class="_ _3"></span>rst<span class="_ _c"> </span>case,<span class="_ _10"> </span><span class="ff6">f(x)<span class="_ _10"> </span></span>is<span class="_ _f"> </span>evaluated<span class="_ _c"> </span>at<span class="_ _f"> </span>every<span class="_ _c"> </span>iteration<span class="_ _f"> </span>(esp<span class="_ _b"></span>ecially<span class="_ _c"> </span>when<span class="_ _f"> </span>it<span class="_ _c"> </span>b<span class="_ _b"></span>elongs<span class="_ _f"> </span>to</div><div class="t m0 x1 hb y22e ff4 fs6 fc0 sc0 ls0 ws0">another<span class="_ _c"> </span>translation<span class="_ _c"> </span>unit)</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">58/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf40" class="pf w0 h0" data-page-no="40"><div class="pc pc40 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Lo<span class="_ _b"></span>op<span class="_ _1b"> </span>Unrolling<span class="_ _51"> </span>1/2</div><div class="t m0 x1 hb y6d ff1 fs6 fc0 sc0 ls0 ws0">Lo<span class="_ _b"></span>op<span class="_ _8"> </span>unrolling<span class="_ _f"> </span><span class="ff4">(o<span class="_ _3"></span>r<span class="_ _f"> </span><span class="ff1">unwinding<span class="_ _b"></span></span>)<span class="_ _c"> </span>is<span class="_ _f"> </span>a<span class="_ _c"> </span>lo<span class="_ _b"></span>op<span class="_ _f"> </span>transformation<span class="_ _c"> </span>technique<span class="_ _c"> </span>which<span class="_ _c"> </span>optimizes</span></div><div class="t m0 x1 hb ye9 ff4 fs6 fc0 sc0 ls0 ws0">the<span class="_ _c"> </span>co<span class="_ _b"></span>de<span class="_ _f"> </span>b<span class="_ _3"></span>y<span class="_ _f"> </span>removing<span class="_ _c"> </span>(or<span class="_ _c"> </span>reducing)<span class="_ _c"> </span>lo<span class="_ _b"></span>op<span class="_ _f"> </span>iterations</div><div class="t m0 x1 hb yea ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _c"> </span>optimization<span class="_ _c"> </span>produces<span class="_ _f"> </span>b<span class="_ _b"></span>etter<span class="_ _f"> </span>co<span class="_ _b"></span>de<span class="_ _c"> </span>at<span class="_ _f"> </span>the<span class="_ _c"> </span>exp<span class="_ _b"></span>ense<span class="_ _f"> </span>of<span class="_ _c"> </span>binary<span class="_ _c"> </span>size</div><div class="t m0 x1 h6 y22f ff4 fs4 fc0 sc0 ls0 ws0">Example:</div><div class="t m0 x1 hd y230 ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>N;<span class="_ _9"> </span>i<span class="fc8">++</span>)</span></span></div><div class="t m0 xd hd y231 ffb fs7 fc0 sc0 ls0 ws0">sum<span class="_ _9"> </span><span class="fc8">+=<span class="_ _9"> </span></span>A[i];</div><div class="t m0 x1 h6 y232 ff4 fs4 fc0 sc0 ls0 ws0">can<span class="_ _d"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>rewritten<span class="_ _d"> </span>as:</div><div class="t m0 x1 hf y233 ff5 fs5 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffc fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffc fc0">i<span class="_ _1b"> </span><span class="fc8">=<span class="_ _8"> </span>0</span>;<span class="_ _1b"> </span>i<span class="_ _1b"> </span><span class="fc8">&lt;<span class="_ _8"> </span></span>N;<span class="_ _1b"> </span>i<span class="_ _1b"> </span><span class="fc8">+=<span class="_ _8"> </span>8</span>)<span class="_ _1b"> </span>{</span></span></div><div class="t m0 xf hf y234 ffc fs5 fc0 sc0 ls0 ws0">sum<span class="_ _8"> </span><span class="fc8">+=<span class="_ _1b"> </span></span>A[i];</div><div class="t m0 xf hf y235 ffc fs5 fc0 sc0 ls0 ws0">sum<span class="_ _8"> </span><span class="fc8">+=<span class="_ _1b"> </span></span>A[i<span class="_ _1b"> </span><span class="fc8">+<span class="_ _8"> </span>1</span>];</div><div class="t m0 xf hf y236 ffc fs5 fc0 sc0 ls0 ws0">sum<span class="_ _8"> </span><span class="fc8">+=<span class="_ _1b"> </span></span>A[i<span class="_ _1b"> </span><span class="fc8">+<span class="_ _8"> </span>2</span>];</div><div class="t m0 xf hf y237 ffc fs5 fc0 sc0 ls0 ws0">sum<span class="_ _8"> </span><span class="fc8">+=<span class="_ _1b"> </span></span>A[i<span class="_ _1b"> </span><span class="fc8">+<span class="_ _8"> </span>3</span>];</div><div class="t m0 xf hf y238 ffc fs5 fc0 sc0 ls0 ws0">...</div><div class="t m0 x1 hf y239 ffc fs5 fc0 sc0 ls0 ws0">}<span class="_ _8"> </span><span class="ffa fc5">//<span class="_ _1b"> </span>we<span class="_ _8"> </span>suppose<span class="_ _1b"> </span>N<span class="_ _8"> </span>is<span class="_ _1b"> </span>a<span class="_ _8"> </span>multiple<span class="_ _1b"> </span>of<span class="_ _8"> </span>8</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">59/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf41" class="pf w0 h0" data-page-no="41"><div class="pc pc41 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Lo<span class="_ _b"></span>op<span class="_ _1b"> </span>Unrolling<span class="_ _51"> </span>2/2</div><div class="t m0 x1 hb y6d ff1 fs6 fc0 sc0 ls0 ws0">Lo<span class="_ _b"></span>op<span class="_ _8"> </span>unrolling<span class="_ _f"> </span>can<span class="_ _8"> </span>make<span class="_ _f"> </span>your<span class="_ _c"> </span>co<span class="_ _0"></span>de<span class="_ _f"> </span>b<span class="_ _b"></span>etter/faster:</div><div class="t m0 x5 hb y23a ff1 fs6 fc0 sc0 ls0 ws0">+<span class="_ _6"> </span><span class="ff4">Imp<span class="_ _3"></span>rove<span class="_ _f"> </span>instruction-level<span class="_ _c"> </span>parallelism<span class="_ _c"> </span>(ILP)</span></div><div class="t m0 x5 hb y23b ff1 fs6 fc0 sc0 ls0 ws0">+<span class="_ _6"> </span><span class="ff4">Allo<span class="_ _3"></span>w<span class="_ _f"> </span>vector<span class="_ _c"> </span>(SIMD)<span class="_ _c"> </span>instructions</span></div><div class="t m0 x5 hb y23c ff1 fs6 fc0 sc0 ls0 ws0">+<span class="_ _6"> </span><span class="ff4">Reduce<span class="_ _c"> </span>control<span class="_ _f"> </span>instructions<span class="_ _c"> </span>and<span class="_ _f"> </span>b<span class="_ _3"></span>ranches</span></div><div class="t m0 x1 hb y23d ff1 fs6 fc0 sc0 ls0 ws0">Lo<span class="_ _b"></span>op<span class="_ _8"> </span>unrolling<span class="_ _f"> </span>can<span class="_ _8"> </span>make<span class="_ _f"> </span>your<span class="_ _c"> </span>co<span class="_ _0"></span>de<span class="_ _f"> </span>w<span class="_ _3"></span>orse/slo<span class="_ _3"></span>w<span class="_ _3"></span>er:</div><div class="t m0 x10 hb y23e ff1 fs6 fc0 sc0 ls0 ws0">-<span class="_ _6"> </span><span class="ff4">Increase<span class="_ _c"> </span>compile-time/binary<span class="_ _c"> </span>size</span></div><div class="t m0 x10 hb y23f ff1 fs6 fc0 sc0 ls0 ws0">-<span class="_ _6"> </span><span class="ff4">Require<span class="_ _c"> </span>more<span class="_ _c"> </span>instruction<span class="_ _c"> </span>deco<span class="_ _b"></span>ding</span></div><div class="t m0 x10 hb y240 ff1 fs6 fc0 sc0 ls0 ws0">-<span class="_ _6"> </span><span class="ff4">Use<span class="_ _c"> </span>more<span class="_ _c"> </span>memo<span class="_ _3"></span>ry<span class="_ _f"> </span>and<span class="_ _c"> </span>instruction<span class="_ _f"> </span>cache</span></div><div class="t m0 x1 hb y241 ff1 fs6 fc0 sc0 ls0 ws0">Unroll<span class="_ _f"> </span>directive<span class="_ _f"> </span><span class="ff4 fs4">The<span class="_ _c"> </span><span class="ff6">Intel</span>,<span class="_ _d"> </span><span class="ff6">IBM</span>,<span class="_ _c"> </span><span class="ff6">Arm</span>,<span class="_ _d"> </span><span class="ff6">Nvidia</span>,<span class="_ _c"> </span><span class="ff6">clang</span>,<span class="_ _d"> </span>and<span class="_ _c"> </span><span class="ff6">GCC<span class="_ _d"> </span></span>compilers<span class="_ _c"> </span>p<span class="_ _3"></span>rovide<span class="_ _c"> </span>the</span></div><div class="t m0 x1 h6 y242 ff4 fs4 fc0 sc0 ls0 ws0">p<span class="_ _3"></span>reprocessing<span class="_ _c"> </span>directive<span class="_ _12"> </span><span class="ff6">#pragma<span class="_"> </span>unroll<span class="_ _12"> </span></span>(<span class="_ _d"> </span><span class="ff6">#pragma<span class="_"> </span>GCC<span class="_"> </span>unroll<span class="_ _12"> </span></span>fo<span class="_ _3"></span>r<span class="_ _c"> </span>GCC)<span class="_ _d"> </span>to<span class="_ _c"> </span>insert<span class="_ _d"> </span>ab<span class="_ _b"></span>ove</div><div class="t m0 x1 h6 y243 ff4 fs4 fc0 sc0 ls0 ws0">the<span class="_ _d"> </span>lo<span class="_ _b"></span>op<span class="_ _c"> </span>to<span class="_ _d"> </span>force<span class="_ _d"> </span>lo<span class="_ _b"></span>op<span class="_ _c"> </span>unrolling.<span class="_ _1b"> </span>The<span class="_ _d"> </span>compiler<span class="_ _c"> </span>already<span class="_ _d"> </span>applies<span class="_ _c"> </span>the<span class="_ _d"> </span>optimization<span class="_ _c"> </span>in<span class="_ _d"> </span>most<span class="_ _c"> </span>cases</div><div class="t m0 xb hd y244 ffb fs7 fcc sc0 ls0 ws0">Why<span class="_ _9"> </span>are<span class="_ _9"> </span>unrolled<span class="_ _21"> </span>loops<span class="_ _9"> </span>faster?</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">60/93</div><a class="l" href="https://lemire.me/blog/2019/04/12/why-are-unrolled-loops-faster/"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:4.714000px;width:143.213000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf42" class="pf w0 h0" data-page-no="42"><div class="pc pc42 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Assertions</div><div class="t m0 x1 hb y6d ff4 fs6 fc0 sc0 ls0 ws0">Some<span class="_ _c"> </span>compilers<span class="_ _c"> </span>(e.g.<span class="_ _21"> </span><span class="ff6">clang</span>)<span class="_ _f"> </span>use<span class="_ _c"> </span>assertions<span class="_ _f"> </span>for<span class="_ _c"> </span>optimization<span class="_ _c"> </span>purp<span class="_ _b"></span>oses:<span class="_ _21"> </span>most<span class="_ _c"> </span>likely</div><div class="t m0 x1 hb ye9 ff4 fs6 fc0 sc0 ls0 ws0">co<span class="_ _b"></span>de<span class="_ _c"> </span>path,<span class="_ _f"> </span>not<span class="_ _c"> </span>p<span class="_ _b"></span>ossible<span class="_ _f"> </span>values,<span class="_ _c"> </span>etc.<span class="_ _21"> </span><span class="ff1b">3</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">61/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf43" class="pf w0 h0" data-page-no="43"><div class="pc pc43 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIyUlEQVR42u3ZvUkEURSG4b0yB6ODNYiRFYgYC3ZmE5ZjYBF2YLTcyJuMwYKh68+6e4Z5ngqGbxh4OdOubu42AABQxuvL85kVAACoRqQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAPCpjTGsAABAHRHhkgoAQDkiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCwZtOCnrX37oUBAPxOZi7oaV1SAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAD4szbGsAIAAHVEhEsqAADliFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAALN1kAlau924EishMIwDsuKQCAFCOSyrAUvkP8E+ctKECl1QAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgBQ22QCVi4zjQAA1bikAgAgUgEAYJ82xrACAAB1RIRLKgAA5YhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQDgqCYTAMBB9N6NwBcy0wjf55IKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAAamtjDCsAAFBHRLikAgBQjkgFAECkAgDAPpMJTq73bgSWIjN9Yt44wBG4pAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAP9LGGFYAAKCOiHBJBQCgHJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAIBDm7aPl1YAgJ23+ycjwMld3z60dnE+b983m3meDQIAQAkfuUIyJ7lv07UAAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Compiler<span class="_ _1b"> </span>Hints<span class="_ _1b"> </span>-<span class="_ _1b"> </span><span class="ff5">[[assume]]/std::unreachable()</span></div><div class="t m0 x1 hb y6d ff4 fs6 fcd sc0 ls0 ws0">C++23<span class="_ _c"> </span><span class="fc0">allows<span class="_ _c"> </span>defining<span class="_ _c"> </span>an<span class="_ _c"> </span><span class="ff9">assumption<span class="_ _f"> </span></span>in<span class="_ _f"> </span>the<span class="_ _c"> </span>co<span class="_ _b"></span>de<span class="_ _f"> </span>that<span class="_ _c"> </span>is<span class="_ _f"> </span>alwa<span class="_ _3"></span>ys<span class="_ _c"> </span>true</span></div><div class="t m0 x1 hd y245 ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffb fc0">x<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>...;</span></div><div class="t m0 x1 hd y246 ffb fs7 fc0 sc0 ls0 ws0">[[assume(x<span class="_ _9"> </span><span class="fc8">&gt;<span class="_ _9"> </span>0</span>)]];<span class="_ _21"> </span><span class="ffa fc5">//<span class="_ _9"> </span>the<span class="_ _21"> </span>compiler<span class="_ _9"> </span>assume<span class="_ _21"> </span>that<span class="_ _9"> </span><span class="ff14">&apos;</span>x<span class="ff14">&apos;<span class="_ _9"> </span></span>is<span class="_ _21"> </span>positive</span></div><div class="t m0 x1 hd y247 ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffb fc0">y<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>x<span class="_ _21"> </span><span class="fc8">/<span class="_ _9"> </span>2</span>;<span class="_ _47"> </span><span class="ffa fc5">//<span class="_ _9"> </span>the<span class="_ _21"> </span>operation<span class="_ _9"> </span>is<span class="_ _21"> </span>translated<span class="_ _9"> </span>in<span class="_ _9"> </span>a<span class="_ _21"> </span>single<span class="_ _9"> </span>shift<span class="_ _21"> </span>as<span class="_ _9"> </span>for</span></span></div><div class="t m0 x41 hd y248 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>the<span class="_ _9"> </span>unsigned<span class="_ _21"> </span>case</div><div class="t m0 x1 hb y249 ff4 fs6 fcd sc0 ls0 ws0">C++23<span class="_ _c"> </span><span class="fc0">also<span class="_ _c"> </span>provides<span class="_ _10"> </span><span class="ff6">std::unreachable()<span class="_ _10"> </span></span>(<span class="_ _26"> </span><span class="ff6">&lt;utility&gt;<span class="_ _d"> </span></span>)<span class="_ _c"> </span>for<span class="_ _c"> </span>ma<span class="_ _3"></span>rking<span class="_ _c"> </span>unreachable</span></div><div class="t m0 x1 hb y24a ff4 fs6 fc0 sc0 ls0 ws0">co<span class="_ _b"></span>de</div><div class="t m0 x1 h10 y24b ffe fs7 fc0 sc0 ls0 ws0">Compilers<span class="_ _d"> </span>p<span class="_ _3"></span>rovide<span class="_ _d"> </span>non-p<span class="_ _b"></span>ortable<span class="_ _26"> </span>instructions<span class="_ _d"> </span>for<span class="_ _26"> </span>previous<span class="_ _26"> </span>C++<span class="_ _d"> </span>standards:<span class="_ _52"> </span><span class="ffb">__builtin_assume()</span></div><div class="t m0 x1 h10 y24c ffe fs7 fc0 sc0 ls0 ws0">(<span class="ffb">clang</span>),<span class="_ _2d"> </span><span class="ffb">__builtin_unreachable()<span class="_ _12"> </span></span>(<span class="ffb">gcc</span>),<span class="_ _2d"> </span><span class="ffb">__assume()<span class="_ _2d"> </span></span>(<span class="ffb">msvc</span>)</div><div class="t m0 x1 hb y24d ff4 fs6 fc0 sc0 ls0 ws0">Note:<span class="_ _21"> </span>sometimes<span class="_ _c"> </span>user-provided<span class="_ _c"> </span>info<span class="_ _3"></span>rmation<span class="_ _c"> </span>leads<span class="_ _f"> </span>to<span class="_ _c"> </span>wo<span class="_ _3"></span>rse<span class="_ _c"> </span>optimization,<span class="_ _f"> </span>see</div><div class="t m0 x1 hb y24e ff6 fs6 fc0 sc0 ls0 ws0">@llvm.assume<span class="_"> </span>blocks<span class="_"> </span>optimization<span class="_ _d"> </span><span class="ff10 fs8"><span class="_ _c"> </span></span><span class="ff4">and<span class="_ _c"> </span></span>Refined<span class="_"> </span>Input,<span class="_"> </span>Degraded<span class="_"> </span>Output:</div><div class="t m0 x1 h11 y24f ff6 fs6 fc0 sc0 ls0 ws0">The<span class="_"> </span>Counterintuitive<span class="_"> </span>World<span class="_"> </span>of<span class="_"> </span>Compiler<span class="_"> </span>Behavior<span class="_ _d"> </span><span class="ff10 fs8"></span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">62/93</div><a class="l" href="https://discourse.llvm.org/t/llvm-assume-blocks-optimization/71609/8"><div class="d m1" style="border-style:none;position:absolute;left:27.350000px;bottom:33.129000px;width:194.273000px;height:11.993000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://dl.acm.org/doi/pdf/10.1145/3656404"><div class="d m1" style="border-style:none;position:absolute;left:243.418000px;bottom:33.129000px;width:182.775000px;height:11.993000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://dl.acm.org/doi/pdf/10.1145/3656404"><div class="d m1" style="border-style:none;position:absolute;left:27.350000px;bottom:17.548000px;width:280.182000px;height:10.951000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf44" class="pf w0 h0" data-page-no="44"><div class="pc pc44 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIX0lEQVR42u3YsQ3CMBRFURvFSskMUSomQIgaic2yRMZJkSGyAVVK3JiONh36QueM8Kqrl8frPQEAQBjbupysAABANCIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAICvXGu1AgAAcZRSPKkAAIQjUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkmAABApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUk0AAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIA8D+6fRqsAACHXo/ZCPAbl9sz53Pf9ndKrTWDAAAQwgczeBQERSBZawAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Recursion<span class="_ _53"> </span>1/2</div><div class="t m0 x1 hb y250 ff1 fs6 fc0 sc0 ls0 ws0">A<span class="_ _3"></span>void<span class="_ _8"> </span>run-time<span class="_ _8"> </span>recursion<span class="_ _c"> </span><span class="ff4">(very<span class="_ _f"> </span>exp<span class="_ _b"></span>ensive).<span class="_ _21"> </span>Prefer<span class="_ _c"> </span><span class="ff9">iterative<span class="_ _1b"> </span></span>algorithms<span class="_ _c"> </span>instead</span></div><div class="t m0 x1 hb y251 ff1 fs6 fc0 sc0 ls0 ws0">Recursion<span class="_ _f"> </span>cost:<span class="_ _21"> </span><span class="ff4">The<span class="_ _f"> </span>program<span class="_ _c"> </span>must<span class="_ _c"> </span>sto<span class="_ _3"></span>re<span class="_ _f"> </span>all<span class="_ _c"> </span>variables<span class="_ _c"> </span>(snapshot)<span class="_ _c"> </span>at<span class="_ _c"> </span>each<span class="_ _f"> </span>recursion</span></div><div class="t m0 x1 hb y252 ff4 fs6 fc0 sc0 ls0 ws0">iteration<span class="_ _c"> </span>on<span class="_ _c"> </span>the<span class="_ _c"> </span>stack,<span class="_ _c"> </span>and<span class="_ _c"> </span>remove<span class="_ _c"> </span>them<span class="_ _c"> </span>when<span class="_ _c"> </span>the<span class="_ _c"> </span>control<span class="_ _c"> </span>return<span class="_ _c"> </span>to<span class="_ _c"> </span>the<span class="_ _c"> </span>caller<span class="_ _c"> </span>instance</div><div class="t m0 x1 hb y253 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _c"> </span><span class="ff1">tail<span class="_ _c"> </span>recursion<span class="_ _c"> </span></span>optimization<span class="_ _c"> </span>avoids<span class="_ _c"> </span>maintaining<span class="_ _c"> </span>caller<span class="_ _c"> </span>stack<span class="_ _c"> </span>and<span class="_ _c"> </span>pass<span class="_ _c"> </span>the<span class="_ _d"> </span>control<span class="_ _c"> </span>to</div><div class="t m0 x1 hb y254 ff4 fs6 fc0 sc0 ls0 ws0">the<span class="_ _c"> </span>next<span class="_ _c"> </span>iteration.<span class="_ _9"> </span>The<span class="_ _c"> </span>optimization<span class="_ _c"> </span>is<span class="_ _c"> </span>p<span class="_ _b"></span>ossible<span class="_ _c"> </span>only<span class="_ _c"> </span>if<span class="_ _c"> </span>all<span class="_ _c"> </span>computation<span class="_ _c"> </span>can<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>executed</div><div class="t m0 x1 hb y255 ff4 fs6 fc0 sc0 ls0 ws0">b<span class="_ _b"></span>efo<span class="_ _3"></span>re<span class="_ _f"> </span>the<span class="_ _c"> </span>recursive<span class="_ _f"> </span>call</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">63/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf45" class="pf w0 h0" data-page-no="45"><div class="pc pc45 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAgAElEQVR42uzdW5Nc15Un9nXZ+1zyXvcqFFAACfAiqiV1R4djHOFwhOdT2G+eN3+KefejP4LDfvODHxwO2xP2XHpardZlJHZLJEUCIIl7EVWFqsrMysxz2WstP5wsAC2xp7vtiBlxev1CwYAKIFGV5+TZ/7322jvx7j/5L8A555xzzrk/GA9/+mPyV8E555xzzv2h8ZDqnHPOOec8pDrnnHPOOech1TnnnHPOeUh1zjnnnHPOQ6pzzjnnnPOQ6pxzzjnnnIdU55xzzjnnIdU555xzzjkPqc4555xzznlIdc4555xzHlKdc84555zzkOqcc8455zykOuecc8455yHVOeecc855SHXOOeecc85DqnPOOeec85DqnHPOOeech1TnnHPOOec8pDrnnHPOOQ+pzjnnnHPOeUh1zjnnnHMeUp1zzjnnnPOQ6pxzzjnnPKQ655xzzjnnIdU555xzzjkPqc4555xzzkOqc84555xzHlKdc84555yHVOecc8455zykOuecc845D6nOOeecc855SHXOOeeccx5SnXPOOeec85DqnHPOOeech1TnnHPOOech1TnnnHPOOQ+pzjnnnHPOQ6pzzjnnnHMeUp1zzjnnnIdU55xzzjnnPKQ655xzzjnnIdU555xzznlIdc4555xzzkOqc84555zzkOqcc84555yHVOecc8455yHVOeecc845D6nOOeecc85DqnPOOeeccx5SnXPOOeec85DqnHPOOec8pDrnnHPOOech1TnnnHPOeUh1zjnnnHPOQ6pzzjnnnPOQ6pxzzjnnnIdU55xzzjnnXsOmafxVcM4555xzfzhijF5Jdc4555xzf3A8pDrnnHPOOQ+pzjnnnHPOeUh1zjnnnHMeUp1zzjnnnPOQ6pxzzjnn/pMT/CX4TxLjP+DK4u9/ycAIAEENVJWI6Ho6owYtyDeXs08efJ0Phr0iazURhl5erhazLMPDg4NgAqkqi8KI55VezFfcXh0d7CBBEmUMAZmBQODp4yf/w3//z03bi9mcyoGFnERERFUR2cwCGiOsFovUJhM1UEBARMTuu0YiFhERCSGoCQRAM0kpBiyywiAahUax6I9vHh3tj/PJaLQxnvSLcmdnZ3Nv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L76ySC5NNPx1VIwMiyGjELksS2eoleUrKysIUBZFnqTWGOucj7WpvyzLZKxJdS6pfKX3ZN0m1cavdlvZemsTIjQGy9KnacJR0jSPgQ1ZY1ySgBIfSZJYa8typGuySTcTBEO0eO789k1bLiw8X4k+C1A78hDl0vP9bxbjdmnc/9fzumJ55qVXFl97LSNH1oEx7W633WojG/biK68uXahDISMAC8TI3lpTv4A29UW9O0DlK52EMgsaZBZADDHqvWMyaGlcmgoABkQRUry4TdE1itUGXzaSfPkO03qDU2EiuGo1X2nVXXQR7WomjlWkOMHp6tS80+n4GCNHQHDW1MmtaIjIABojaWpcauY3zV131RXPPPlsFVjIGQQERmPHVLE0n4QIxvLNGnkrd2tWKWNpPstF+4oJyE7jQASoxRQgSA3UnkTnYwMTa5g21nYsjjGMdXVwcUuTtm4Z5RYjM2Gctiv/4KN33nrNTNt4J6a7pvONe79y8223LibYio4JkC5qhdW3oQWYGnQLqwEFKICMAoaAMFo7cORTS912e8P6dP06u36ut3FDkmdGwFTx9DNPPfPg17/2h3e/9I0n59dtvPr9d9zygffP7987e+WOMklkuj1KTUwcC6bRIAKSIUASRCAhEKrPIwESrD6+aqxJumBY2wsQ1bsVQQMX9aKNLVRv7K9iNkgnT7/+zDPPLS33z58//+qxl59//rknvvHotx77xpFDB4v+4vzOPW/43r10+FCr1dK00TzPYwhaytDv95MkKcpSUcv4eQyKqkMIg8HAe79mzRrVCK6srExWCmuKpNaZNuS9gs7RaKTOaC1bV0WpcqK68HQ6rBmoNTOhfQFajmotIlZlNSoK5fyV0w0xFkURYzTGIaJzVgMl1OxPRL/wC7+wb98+RcNlUVZlpRXLC0uLBw8e7C8vT09P62d84oknduy48otf/OL8/Pzhw4fn5zf/h//0W7uv2/2Zz/znH//xH19ZXg4h3H333bfccsu3v/3tT33qU5s3bz58+PCDDz744Q9/WLOZQggvvvjizTff/Ed/9EetVuvlV17evGnzyy+91Ot2W3lr7969Dz744J6b92zdujXN0isu23bVzp3f+73fu3nTpgMHDmzfvn3bZZfd8Y47rFFnumXhEMKOHVd2Ot3Z2RmX2KIYMWucMFjrQvBkqChGKgdijogwGPQj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MTHR7XfJ87zdbisl0Mmv5pD7LM3baMBEhnQeqmE/ROpg1XuK6q7IkNIhXTjYpVQBQH9c+6usaoxoIAAAIABJREFUNaVSSXVaGogUvIsgDPeV/9eN16Bw7nndcxtbuQ8sIhBFhpmNIRENttQ8Z6mU46WLF0LgdtvlAV85NPLwL5+wNrrx2rclkRgMBjg2qNkl3YR27x0HV4jwbW++bOnSRQLw+BPrtm7faWKDhlzg2773g1qjff11155y8okxuEKMcQxxpHDbEBjSFnuRODKlUrJyxRl51pYQEIADI6AAG2NJLwOgJQIWJahiouGhQQFmwMl6k8hqR5K2FyVxgShCoQ0bNh549eAZp52aNyaufMNqAN68dfvefQf1FNHNXNRSUABBIhYmgRnTh849f5Wg/OKXT6hL/dg0JX0k628+/vhaELjwwgsKxSgEPnp01HvPneSjTvA4AF93w9UIcvDgoQcffAzQIhEQCk0F9JMJIRDS0fHatu07Lzhv1YzhaQZxZGQUiTrHFRENM83SDAC074DQRETBpfNmDX3kA+8mgS//w62vHBxNPQMCAnIISg8TUJIk3oV2lnmWR594ev0LG17/+nMvW30uScugQezYzqZwswGwIGhREiOXXnzu/lf3GhucyzhwYGHxIThm31XIKTz1U0vkNWCKU+eu12hUBAHwwQthpacHphp39ABnzG/oEFdMqUN2fZbDVATVlFu5rY//PM+ROlEPqp5UJrW3t7evr29gYEC96noynJycDN5L4CSOqz3VOIosmZ5Kj26Pdrutpe0KSvSb6Jyr1Wo6YDXGGDIIGBkb2SiOouCDdy5LU5fnA339ZirkUnlijfpXtK1QKYqtjcj53FrDU61F2rxaq9WyNNXpcGDes2dPb2/fpk2bmeHee3/+wAMP7d23//DhI+VyuVqtPv7448aY+fPn33TTTcaY973vveecc06pVEySaPbsWaOjI8PDQ4cPHdq2ZcvWLZtrExOEmLbbw8PT3/ve9y5fvvyWW941NDT01a9+9YwzzvjMZz5z8sknn3baaW+7+q1z5sweHh7q6Sn19vZ475955pl2u10ul4vF1/CQ1n4qda1Q7OwVKyYmJqdPn37o0IHBwcElSxa//PLLa9asOXz48P5XXomiqFBIent79bzX/U7pBFy1la1WK59aAKBHBVVZEFFheF7f4FBPe//0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+o9AtDJPAUGgaE72CSR3iwHv66Z6E8EKmRSfCk50Qg4fbdMSNNcnoIgMoG2ysMhcLLQ0BQAEKJDROQFY7tzi7IBWiEEzFo0A0ADa1n+E0L4WOiP1jKUvyO0UTQDcFCwnkBdREFrmiVN+WqU7LZ098f/pgw9A6yw12ghEbXRCySfRkvwkrlQq7c68OI6tsb7vGWOVUinPj5unHFqySklr4zBsAIBSgsi6rqe1YcWnUkpK1h3ydxprjZQOotDa5nJ5dsb4vpdKpRApikNjtFIqm822AfHmms0YE8fGWkil0sYYXhc4SiKi73pxFAGRjrTVFgmtIUe5LK985plnjh49Ojw8zFKQVCr1/PPPf/3rX1++fPmOHTv27d9/5PDh1atXh2H47LPPzps3MDAwwIrMoaGh06dPV6vVSy655NChI9bSkiVLhBDLlg1zY9PWrVv37//14sWLr9p6ldXGkaojl097KaN1aWZ627a7fvazp+6//8ebNm2anp5xXW+mNO047qpVq13X/dQnPzk0NPToo48eOHDg+PETfX39rus98cSTuVz+2muv/cUvnr766muMsUo5LHz81re+1d/fO2/eQBxHR44eedV11226/LIL1104vHy577qu47jKieMon83F1k7PTLuu67reffffv2DBgkceeeSuu76/e/eejRsvdRzHGM14i/g6tcZ1Xd/3jbVExGoN13H4poPNZYZg5ajrurz2SAgC13GEEMaabC4nhWQgODsZMCYOoygMG406EugoDhuBNSble6LVtsqYlc1S0EK9yU2Dz0+WijJly//E5C5zwO0OUf6bSqWSBLOwCpa1qlzw67purNnWB7GOm8wFEas+OGArUUUzdeo4Dlkiax2pBKBQgscFRBQGgeelwEmde8T//oDUc+7+383NhBUdlE1Q0UFFhzUBtpDPW7IgEAGVRCnRcVxLZImERCWFkk3yrmn6BQjjMAiDpHvHWKONNtZqY6y1xhpLtuVjwZZ+kV+S2vV2bJwnsk2SjLQlLSRKR6BgrSqDYy6UamajGpOgUkaNoj3lsdUdAK23ZiCDPCgXohmYz0nj7Qv3dhsNT6YZmxpjcFY62ZyVn5GjKZCAWuYSKaUDIMgCAuscgPEH90DygDWK4tbA09o22V+sddzqLpetmz60JLNMVAspOEnKtH7qrFD6BG8hYDLRTvL8E/aU7/tJ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8zNYSrlq1apCoZDJZDo7O4UQlWp1wdD8dCodxxG1utPYz+R5HiLwsHV6ero9hiyhltmSxQxWEvXAn0cKHYVaN9N6yfHcWr3W0dHB4IPVhGyO4cpQRFBKBkEjl8tyczozwSxUIARDFNZqUkptDAKEYXh6fDyVSh07fnzk+PE9L+zOF/La6IOHj/zVu/5q165d7373u//jP/6jWCz+5Cc/Wbx48fyhoScee2zl8hVKyr1796VTqb179sRhlMlm165ZOzBnwFgzODiY8lNr166ph42WKhfaCzM5z5iRMQseXNc9ePDg/Pnzf/SjH1133XXZbLZWrfb09vb2969cvWbnzp3r11908ODBK664YmJ8YsWKFbue27VixfIP3fahXCr74b+9rau768SJE1u3bvU8b3h4mFWSTASyWDMMGuxh4hSqxx9//OGHf2qM+e///kKlUnn44Z9cunHThg0bBgcHR0dHozDkGFGwtl6rd3V2RlHEMWH8asymM+Tt6OjI5XKl6VI6nfFcN451FIWZVFqgIGOlo6TjJjMo3gnj4+O+7/Owno8Or/yJiKMD+I8sMEilUlprtvkz+uTgCMdxisUipz0w3mWqlZcr+Xy+UqkwbGUjHSNO5nq5m7fRaECzhyzmo6CU6unpieOY1QLM7zLjy78vywP4YyeFwO0hg5wBnDw7uJ6NW9f4cji3nQOp57bf8nF/acqi7VJdFMflchkQXM8BRLKAktjYRPyQFrNZPG3j9bamSkBAUMox1rQAqOX7iZQch9/M6pdSstLPtMam3KcKBEIKKYSxFlsYgiFIO3fFs6RkFsxPWR1rItKGM7DwFfNcaLVL4bp1G+69/7kVKy947esuB6jt3P78D+/9Wa2hr7rqanHXE/39c99x841BMLN9++4nn9xx948efdMbrxxcct5z+0YuvuQyV5I12pCRqhBEGQuFp7bvfsMN6zlm03PSq1Zf8vOdoydP1h5//NnXvfp8orBQyC1bukqIk9l8XpuKJPBc58J1F+058KjnFwiq6y648LyVe17afUgbackqaSyIaj3adPmlQoAg4ThuNl+05GdyvSjzY+PT//kfX7rmqqv/8IbXSlkGUUMV9w6kr7xqmatLinypPIdOQXhSUk3ZxkWr5ixdiGEoq2W8//6np2fqloyXSnf3z3/y6T2Xbvj1FRv6EOK8n4rChptqWJom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7NsTRdHlpcs2jgsIn/7Mp6WBVymVRFaZSjR54cIF6fO01p47d+4zn/nMCy+8YEy0vLz8yiuvbNo0L9KCRoEjmk7vvaB2a+3c/HxZFN4555wymoy+UvOR3W5X0q86nc6VK1dkRSGjjDRNh8Oh3C1SHCXj+9hGisFp7bxXRFES565EwlGeoVYeKiunsmY0GqVp2iBOoWPlj8qI3znnnYuNLfI8iqJBv68r2bRq1qjj8VgubhRFV65c0VpL0YBUi7VarRCCK8s0ir3zJrZFWY7H4ziO0zQt8nycF51et3QlKFJay6FJx1WWZU12byP3klWW9z5w8G6dSV1nUte3XwAm9fiP1mryUGbMWZmfXzwfJzEQISogQlJTGza0ux0Tx9OzG+NWKwBneT6JQhqEUSNFiSmqptWSycMMoWITV1N/KtqMfzbRVYf3h8baz4zCOYW6qYVxDRkWKoP8JDW7RjyA2MTF41XgCYAD+zocCcQvEkKAGulhbaRqYjubI0FE9h49y4GbyGprtTXSpuPq9sXJUTUjcIO0GlpUTlV1PSam5Fg51esTXmXRMyMAYW3wkr0jhTWPiIAEpCoLFGGAwMACVuujlP6XiqYVwExrRReTKgEAQCJJw697mQDWtj298Yu1x1593Ygv/6URfHXJK+/86m0zeRqveqDY88UMJBb+idsJJoUTtctuFcNic29KMj9ApUglmAiBvTq9Vf5QZQxsiGNARIg7O666pf+fv//7KsCBFCKVzhlrBVJz7esTLTICK6VJ6UZKAcyRtYRISjnvAQGJkFCRiqQiyHtB24iUJLEiRYjWWKHMncR2IiZJInP/OIoUkSJypWvuHpF3S4F7kiZKUQg+SeIkjvM8T5JYYKWrpxkSDESkZe9FTirpBForpYg5VJH+Aay1eV5452xkx+Ox3HLf//73v//977/00ktbt25dWVm5ePHS7/zOb+/du7fVai0sLMRx3O60H/nRo0ffenRh4fWHH37k1CuvzM3OlkWRJMmNN9xwyy23XH/48Lat23bt2kVyroCFfpudnW23O//v175Wer9z507nvTZGG3P6zJmnjx275557tu/Y8dijj910442XL18+evToww8//LFf+ZWVfv+FF15otVr9fn9udm48GjHzysrK3NxcmqYbZ2eNtZ7ZBd9qtaSWPonjJIqcK+UkDwaDptxVa71r1652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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Recursion<span class="_ _53"> </span>2/2</div><div class="t m0 xb h10 y256 ffe fs7 fcc sc0 ls0 ws0">Via<span class="_ _d"> </span><span class="ffb">Twitter<span class="_ _9"> </span>-<span class="_ _9"> </span>Jan<span class="_ _21"> </span>Wildeboer</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">64/93</div><a class="l" href="https://twitter.com/jwildeboer/status/1218865157864067077?s=09"><div class="d m1" style="border-style:none;position:absolute;left:50.580000px;bottom:1.612000px;width:110.261000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf46" class="pf w0 h0" data-page-no="46"><div class="pc pc46 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x8 h2 y135 ff1 fs0 fc0 sc0 ls0 ws0">F<span class="_ _7"></span>unctions</div><a class="l" href="#pf46" data-dest-detail='[70,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:137.252000px;width:110.662000px;height:19.206000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf47" class="pf w0 h0" data-page-no="47"><div class="pc pc47 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAId0lEQVR42u3YsQkCMRiG4UQMlg5geZUTiFgLt4KFw7jHbWDhDIKFQ7jBVVaeaWJnLQdCDp5ngvD9zUtis9kFAACoxuN+m1kBAIDaiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAL5iztkKAADUI6XkJxUAgOqIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARKoJAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVBMAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAYbT6Vh76GoT0cHQym5Xo5GwGAEWJ/WlkBAP6q33dGgN+tt22My0V5vkMopRgEAIAqfAAVbhnx4bPfkwAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">F<span class="_ _3"></span>unction<span class="_ _1b"> </span>Call<span class="_ _1b"> </span>Cost</div><div class="t m0 x1 hb y18c ff1 fs6 fc0 sc0 ls0 ws0">F<span class="_ _3"></span>unction<span class="_ _8"> </span>call<span class="_ _8"> </span>metho<span class="_ _b"></span>ds:</div><div class="t m0 x2c hb y257 ff1 fs6 fc0 sc0 ls0 ws0">Direct<span class="_ _6"> </span><span class="ff4">F<span class="_ _3"></span>unction<span class="_ _f"> </span>address<span class="_ _c"> </span>is<span class="_ _f"> </span>known<span class="_ _c"> </span>at<span class="_ _c"> </span>compile-time</span></div><div class="t m0 xf hb y258 ff1 fs6 fc0 sc0 ls0 ws0">Indirect<span class="_ _6"> </span><span class="ff4">F<span class="_ _3"></span>unction<span class="_ _f"> </span>address<span class="_ _c"> </span>is<span class="_ _f"> </span>known<span class="_ _c"> </span>only<span class="_ _c"> </span>at<span class="_ _c"> </span>run-time</span></div><div class="t m0 x9 hb y259 ff1 fs6 fc0 sc0 ls0 ws0">Inline<span class="_ _6"> </span><span class="ff4">The<span class="_ _c"> </span>function<span class="_ _f"> </span>co<span class="_ _b"></span>de<span class="_ _c"> </span>is<span class="_ _f"> </span>fused<span class="_ _c"> </span>in<span class="_ _f"> </span>the<span class="_ _c"> </span>caller<span class="_ _f"> </span>co<span class="_ _b"></span>de<span class="_ _c"> </span>(same<span class="_ _f"> </span>translation<span class="_ _c"> </span>unit<span class="_ _f"> </span>o<span class="_ _3"></span>r</span></div><div class="t m0 x42 hb y25a ff4 fs6 fc0 sc0 ls0 ws0">Link-time-optimization)</div><div class="t m0 x1 hb y25b ff1 fs6 fc0 sc0 ls0 ws0">Direct/Indirect<span class="_ _f"> </span>function<span class="_ _8"> </span>call<span class="_ _8"> </span>cost:</div><div class="t m0 xb hb y25c ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">The<span class="_ _c"> </span>caller<span class="_ _f"> </span>pushes<span class="_ _c"> </span>the<span class="_ _f"> </span>a<span class="_ _3"></span>rguments<span class="_ _f"> </span>on<span class="_ _c"> </span>the<span class="_ _f"> </span>stack<span class="_ _c"> </span>in<span class="_ _f"> </span>reverse<span class="_ _c"> </span>order</span></div><div class="t m0 xb hb y25d ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Jump<span class="_ _c"> </span>to<span class="_ _f"> </span>function<span class="_ _c"> </span>address</span></div><div class="t m0 xb hb y25e ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">The<span class="_ _c"> </span>caller<span class="_ _f"> </span>clea<span class="_ _3"></span>rs<span class="_ _f"> </span>(p<span class="_ _b"></span>op)<span class="_ _c"> </span>the<span class="_ _f"> </span>stack</span></div><div class="t m0 xb hb y25f ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">The<span class="_ _c"> </span>function<span class="_ _f"> </span>pushes<span class="_ _c"> </span>the<span class="_ _f"> </span>return<span class="_ _c"> </span>value<span class="_ _c"> </span>on<span class="_ _f"> </span>the<span class="_ _c"> </span>stack</span></div><div class="t m0 xb hb y260 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Jump<span class="_ _c"> </span>to<span class="_ _f"> </span>the<span class="_ _c"> </span>caller<span class="_ _f"> </span>address</span></div><div class="t m0 xb hd y261 ffb fs7 fcc sc0 ls0 ws0"><span class="fce sc0">The</span><span class="_ _9"> </span><span class="fce sc0">True</span><span class="_ _9"> </span><span class="fce sc0">Cost</span><span class="_ _21"> </span><span class="fce sc0">of</span><span class="_ _9"> </span><span class="fce sc0">Calls</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">65/93</div><a class="l" href="https://hbfs.wordpress.com/2008/12/30/the-true-cost-of-calls/"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:-14.443000px;width:105.554000px;height:13.444000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf48" class="pf w0 h0" data-page-no="48"><div class="pc pc48 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Argument<span class="_ _1b"> </span>P<span class="_ _3"></span>assing<span class="_ _54"> </span>1/4</div><div class="t m0 x1 hb y6d ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _c"> </span><span class="ff1">optimal<span class="_ _8"> </span>w<span class="_ _3"></span>ay<span class="_ _c"> </span><span class="ff4">to<span class="_ _c"> </span>pass<span class="_ _f"> </span>and<span class="_ _c"> </span>return<span class="_ _c"> </span>arguments<span class="_ _c"> </span>(<span class="ff9">by-value<span class="_ _b"></span></span>)<span class="_ _c"> </span>to/from<span class="_ _f"> </span>functions<span class="_ _c"> </span>is<span class="_ _f"> </span>in</span></span></div><div class="t m0 x1 hb ye9 ff9 fs6 fc0 sc0 ls0 ws0">registers<span class="ff4">.<span class="_ _21"> </span>It<span class="_ _c"> </span>also<span class="_ _c"> </span>avoid<span class="_ _f"> </span>the<span class="_ _c"> </span>p<span class="_ _b"></span>ointer<span class="_ _f"> </span>aliasing<span class="_ _c"> </span>p<span class="_ _0"></span>erfo<span class="_ _3"></span>rmance<span class="_ _c"> </span>issue.<span class="_ _21"> </span>The<span class="_ _c"> </span>following<span class="_ _c"> </span>conditions</span></div><div class="t m0 x1 hb y101 ff4 fs6 fc0 sc0 ls0 ws0">must<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _f"> </span>satisfied:</div><div class="t m0 xb hb y262 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">The<span class="_ _c"> </span>object<span class="_ _f"> </span>is<span class="_ _c"> </span><span class="ff1">trivially<span class="_ _8"> </span>copy<span class="_ _3"></span>able<span class="ff4">:<span class="_ _9"> </span><span class="fs4">No<span class="_ _c"> </span>user-p<span class="_ _3"></span>rovided<span class="_ _c"> </span>copy/m<span class="_ _3"></span>ove/default<span class="_ _c"> </span>constructors,</span></span></span></span></div><div class="t m0 x36 h6 y263 ff4 fs4 fc0 sc0 ls0 ws0">destructo<span class="_ _3"></span>r,<span class="_ _c"> </span>and<span class="_ _d"> </span>cop<span class="_ _3"></span>y/move<span class="_ _d"> </span>assignment<span class="_ _d"> </span>op<span class="_ _b"></span>erators,<span class="_ _d"> </span>no<span class="_ _d"> </span>virtual<span class="_ _d"> </span>functions,<span class="_ _d"> </span>apply<span class="_ _c"> </span>recursively<span class="_ _d"> </span>to</div><div class="t m0 x36 h6 y264 ff4 fs4 fc0 sc0 ls0 ws0">base<span class="_ _d"> </span>classes<span class="_ _c"> </span>and<span class="_ _d"> </span>non-static<span class="_ _c"> </span>data<span class="_ _d"> </span>memb<span class="_ _b"></span>ers</div><div class="t m0 xb hb yfc ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Linux/Unix<span class="_ _c"> </span>(<span class="ff6">SystemV<span class="_"> </span>x86-64<span class="_"> </span>ABI</span>):<span class="_ _f"> </span>data<span class="_ _c"> </span>types<span class="_ _f"> </span><span class="fff">≤<span class="_ _c"> </span><span class="ff1">16<span class="_ _8"> </span>bytes<span class="_ _c"> </span></span></span>(8B<span class="_ _c"> </span><span class="fff">×<span class="_ _c"> </span></span>2),<span class="_ _f"> </span>max<span class="_ _f"> </span><span class="ff1">6</span></span></div><div class="t m0 x36 hb y265 ff1 fs6 fc0 sc0 ls0 ws0">a<span class="_ _3"></span>rguments</div><div class="t m0 xb hb y266 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Windo<span class="_ _3"></span>ws<span class="_ _f"> </span>(<span class="ff6">x64<span class="_"> </span>ABI</span>):<span class="_ _c"> </span>data<span class="_ _f"> </span>types<span class="_ _c"> </span><span class="fff">≤<span class="_ _f"> </span><span class="ff1">8<span class="_ _8"> </span>b<span class="_ _3"></span>ytes<span class="ff4">,<span class="_ _f"> </span>max<span class="_ _f"> </span></span>4<span class="_ _8"> </span>arguments</span></span></span></div><div class="t m0 x30 h10 y267 ff1a fs7 fcc sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ffb">when<span class="_ _9"> </span>are<span class="_ _21"> </span>structs/classes<span class="_ _9"> </span>passed<span class="_ _9"> </span>and<span class="_ _21"> </span>returned<span class="_ _9"> </span>in<span class="_ _21"> </span>registers?</span></div><div class="t m0 x30 h10 y268 ff1a fs7 fcc sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ffb">System<span class="_ _9"> </span>V<span class="_ _21"> </span>ABI<span class="_ _9"> </span>-<span class="_ _9"> </span>X86-64<span class="_ _21"> </span>Calling<span class="_ _9"> </span>Convention</span></div><div class="t m0 x30 h10 y269 ff1a fs7 fcc sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ffb">x64<span class="_ _9"> </span>calling<span class="_ _21"> </span>convention<span class="_ _9"> </span>-<span class="_ _9"> </span>Parameter<span class="_ _21"> </span>Passing</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">66/93</div><a class="l" href="https://stackoverflow.com/questions/42411819/c-on-x86-64-when-are-structs-classes-passed-and-returned-in-registers"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:23.780000px;width:275.019000px;height:10.211000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://wiki.osdev.org/System_V_ABI#x86-64"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:13.170000px;width:190.286000px;height:9.365000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://learn.microsoft.com/en-us/cpp/build/x64-calling-convention?view=msvc-170#parameter-passing"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:2.559000px;width:199.701000px;height:9.366000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf49" class="pf w0 h0" data-page-no="49"><div class="pc pc49 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAImUlEQVR42u3ZsU0DQRCG0Vt0I6KTa0BErgAhx0hugcD1uAk6IKAGSwQUQQdE1gU2kxyZC7CEPGe/V8Hq3+TTbnt8WnUAAFDG99fnnRUAAKhGpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAcNIy0woAANQREV5SAQAoR6QCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSTQAAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAACikNwF1jOM4l6MOw+C+AOD/eEkFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAAJfVMtMKAADUERFeUgEAKEekAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgBAEf1cDno4HtevGxcG87L7eDcCAGdomWkFAADqiAjf/QAAlCNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAMB16/fbBysAQE0/L29G4AYtn9etLe6n/W/XTdNkEAAASvgDZo8jAO68XGAAAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Argument<span class="_ _1b"> </span>P<span class="_ _3"></span>assing<span class="_ _1b"> </span>-<span class="_ _9"> </span>A<span class="_ _3"></span>ctive<span class="_ _1b"> </span>Objects<span class="_ _55"> </span>2/4</div><div class="t m0 xb hb y49 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">If<span class="_ _c"> </span>the<span class="_ _f"> </span>p<span class="_ _3"></span>revious<span class="_ _f"> </span>conditions<span class="_ _c"> </span>are<span class="_ _c"> </span>not<span class="_ _c"> </span>satisfied,<span class="_ _c"> </span>the<span class="_ _f"> </span>object<span class="_ _c"> </span>is<span class="_ _f"> </span>passed<span class="_ _c"> </span><span class="ff1">by-reference</span>.<span class="_ _9"> </span>In</span></div><div class="t m0 x36 hb y21d ff4 fs6 fc0 sc0 ls0 ws0">addition,<span class="_ _c"> </span>objects<span class="_ _c"> </span>that<span class="_ _f"> </span>are<span class="_ _c"> </span>not<span class="_ _c"> </span><span class="ff9">trivially-cop<span class="_ _3"></span>yable<span class="_ _8"> </span><span class="ff4">could<span class="_ _c"> </span>b<span class="_ _0"></span>e<span class="_ _c"> </span>expensive<span class="_ _f"> </span>to<span class="_ _c"> </span>pass</span></span></div><div class="t m0 x36 hb y21e ff9 fs6 fc0 sc0 ls0 ws0">b<span class="_ _3"></span>y-value<span class="_ _1b"> </span><span class="ff4">(copied).</span></div><div class="t m0 xb hb y21f ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">P<span class="_ _3"></span>ass<span class="_ _f"> </span><span class="ff1">by-reference<span class="_ _c"> </span></span>and<span class="_ _c"> </span><span class="ff1">b<span class="_ _3"></span>y-p<span class="_ _b"></span>ointer<span class="_ _f"> </span><span class="ff4">intro<span class="_ _0"></span>duce<span class="_ _c"> </span>one<span class="_ _c"> </span>level<span class="_ _c"> </span>of<span class="_ _c"> </span>indirection</span></span></span></div><div class="t m0 xb hb y26a ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">P<span class="_ _3"></span>ass<span class="_ _f"> </span><span class="ff1">by-reference<span class="_ _c"> </span></span>is<span class="_ _c"> </span>mo<span class="_ _3"></span>re<span class="_ _f"> </span>efficient<span class="_ _c"> </span>than<span class="_ _f"> </span>pass<span class="_ _c"> </span><span class="ff1">by-pointer<span class="_ _f"> </span></span>b<span class="_ _0"></span>ecause<span class="_ _c"> </span>it<span class="_ _c"> </span>facilitates</span></div><div class="t m0 x36 hb y221 ff4 fs6 fc0 sc0 ls0 ws0">va<span class="_ _3"></span>riable<span class="_ _f"> </span>elimination<span class="_ _c"> </span>by<span class="_ _c"> </span>the<span class="_ _c"> </span>compiler,<span class="_ _c"> </span>and<span class="_ _f"> </span>the<span class="_ _c"> </span>function<span class="_ _f"> </span>co<span class="_ _b"></span>de<span class="_ _c"> </span>do<span class="_ _0"></span>es<span class="_ _c"> </span>not<span class="_ _c"> </span>require</div><div class="t m0 x36 hb y222 ff4 fs6 fc0 sc0 ls0 ws0">checking<span class="_ _c"> </span>for<span class="_ _12"> </span><span class="ff6">NULL<span class="_ _10"> </span></span>p<span class="_ _b"></span>ointer</div><div class="t m0 xb hd y26b ffb fs7 fcc sc0 ls0 ws0">Three<span class="_ _9"> </span>reasons<span class="_ _9"> </span>to<span class="_ _21"> </span>pass<span class="_ _9"> </span>std::string_view<span class="_ _21"> </span>by<span class="_ _9"> </span>value</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">67/93</div><a class="l" href="https://quuxplusone.github.io/blog/2021/11/09/pass-string-view-by-value/"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:1.610000px;width:223.238000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf4a" class="pf w0 h0" data-page-no="4a"><div class="pc pc4a w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Argument<span class="_ _1b"> </span>P<span class="_ _3"></span>assing<span class="_ _1b"> </span>-<span class="_ _9"> </span>A<span class="_ _3"></span>ctive<span class="_ _1b"> </span>Objects<span class="_ _55"> </span>3/4</div><div class="t m0 x9 hb y26c ff9 fs6 fc0 sc0 ls0 ws0">A<span class="_ _3"></span>ccording<span class="_ _26"> </span>to<span class="_ _26"> </span>Rome,<span class="_ _26"> </span>&quot;A<span class="_ _d"> </span>seasoned<span class="_ _26"> </span>p<span class="_ _b"></span>erfo<span class="_ _3"></span>rmance<span class="_ _d"> </span>engineer<span class="_ _26"> </span>w<span class="_ _3"></span>as<span class="_ _26"> </span>lo<span class="_ _0"></span>oking<span class="_ _31"> </span>through<span class="_ _26"> </span>Stro-</div><div class="t m0 x30 hb y26d ff9 fs6 fc0 sc0 ls0 ws0">b<span class="_ _b"></span>elight<span class="_ _c"> </span>data<span class="_ _c"> </span>and<span class="_ _c"> </span>discovered<span class="_ _c"> </span>that<span class="_ _c"> </span>b<span class="_ _3"></span>y<span class="_ _c"> </span>filtering<span class="_ _c"> </span>on<span class="_ _c"> </span>a<span class="_ _c"> </span>pa<span class="_ _3"></span>rticular<span class="_ _12"> </span><span class="ffa">std::vector<span class="_ _12"> </span></span>function</div><div class="t m0 x30 hb y26e ff9 fs6 fc0 sc0 ls0 ws0">call<span class="_ _26"> </span>(using<span class="_ _d"> </span>the<span class="_ _d"> </span>symbolized<span class="_ _d"> </span>file<span class="_ _d"> </span>and<span class="_ _26"> </span>line<span class="_ _d"> </span>numb<span class="_ _b"></span>er)<span class="_ _26"> </span>he<span class="_ _d"> </span>could<span class="_ _d"> </span>identify<span class="_ _26"> </span>computationally<span class="_ _d"> </span>ex-</div><div class="t m0 x30 hb y26f ff9 fs6 fc0 sc0 ls0 ws0">p<span class="_ _b"></span>ensive<span class="_ _d"> </span>a<span class="_ _3"></span>rray<span class="_ _26"> </span>copies<span class="_ _d"> </span>that<span class="_ _d"> </span>happ<span class="_ _b"></span>en<span class="_ _d"> </span>unintentionally<span class="_ _d"> </span>with<span class="_ _d"> </span>the<span class="_ _d"> </span><span class="_ _d"> </span><span class="ffa">auto<span class="_ _26"> </span></span><span class="_ _d"> </span>keyw<span class="_ _3"></span>ord<span class="_ _26"> </span>in<span class="_ _d"> </span>C++.&quot;</div><div class="t m0 x9 hb y270 ff9 fs6 fc0 sc0 ls0 ws0">After<span class="_ _c"> </span>finding<span class="_ _d"> </span>one<span class="_ _c"> </span>of<span class="_ _c"> </span>these<span class="_ _c"> </span>costly<span class="_ _d"> </span>arra<span class="_ _3"></span>y<span class="_ _c"> </span>copies<span class="_ _d"> </span>in<span class="_ _c"> </span>the<span class="_ _c"> </span>path<span class="_ _c"> </span>of<span class="_ _d"> </span>one<span class="_ _c"> </span>of<span class="_ _c"> </span><span class="ff19">Meta</span>s<span class="_ _d"> </span>major</div><div class="t m0 x30 hb y271 ff9 fs6 fc0 sc0 ls0 ws0">ad<span class="_ _f"> </span>services,<span class="_ _f"> </span>the<span class="_ _f"> </span>engineer<span class="_ _f"> </span>determined<span class="_ _f"> </span>that<span class="_ _f"> </span>the<span class="_ _8"> </span>vecto<span class="_ _3"></span>r<span class="_ _f"> </span>copy<span class="_ _c"> </span>wasnt<span class="_ _c"> </span>intentional.<span class="_"> </span>So<span class="_ _f"> </span>he</div><div class="t m0 x30 hb y272 ff9 fs6 fc0 sc0 ls0 ws0">added<span class="_ _9"> </span>an<span class="_ _9"> </span>&quot;<span class="_ _d"> </span><span class="ff15">&amp;<span class="_ _26"> </span></span>&quot;<span class="_ _21"> </span>after<span class="_ _9"> </span>the<span class="_ _4"> </span><span class="ffa">auto<span class="_ _2f"> </span></span>keyw<span class="_ _3"></span>o<span class="_ _3"></span>rd<span class="_ _9"> </span>to<span class="_ _21"> </span>turn<span class="_ _9"> </span>the<span class="_ _9"> </span>copy<span class="_ _1b"> </span>into<span class="_ _9"> </span>a<span class="_ _21"> </span>reference,<span class="_ _21"> </span>which</div><div class="t m0 x30 hb y273 ff9 fs6 fc0 sc0 ls0 ws0">avoids<span class="_ _c"> </span>unnecessa<span class="_ _3"></span>ry<span class="_ _c"> </span>data<span class="_ _c"> </span>duplication<span class="_ _d"> </span>by<span class="_ _d"> </span>p<span class="_ _b"></span>ointing<span class="_ _c"> </span>to<span class="_ _c"> </span>the<span class="_ _c"> </span>data<span class="_ _c"> </span>rather<span class="_ _d"> </span>than<span class="_ _c"> </span>reproducing</div><div class="t m0 x30 hb y274 ff9 fs6 fc0 sc0 ls0 ws0">it.</div><div class="t m0 x9 hb y275 ff9 fs6 fc0 sc0 ls0 ws0">&quot;It<span class="_ _21"> </span>w<span class="_ _3"></span>as<span class="_ _21"> </span>a<span class="_ _21"> </span><span class="ff19">one-character<span class="_ _e"> </span>commit</span>,<span class="_ _e"> </span>which,<span class="_ _e"> </span>after<span class="_ _21"> </span>it<span class="_ _9"> </span>was<span class="_ _9"> </span>shipp<span class="_ _b"></span>ed<span class="_ _21"> </span>to<span class="_ _21"> </span>production,</div><div class="t m0 x30 hb y276 ff9 fs6 fc0 sc0 ls0 ws0">equated<span class="_ _d"> </span>to<span class="_ _d"> </span>an<span class="_ _26"> </span>estimated<span class="_ _d"> </span><span class="ff19">15,000<span class="_ _c"> </span>servers<span class="_ _c"> </span>in<span class="_ _d"> </span>capacity<span class="_ _d"> </span>savings<span class="_ _c"> </span>p<span class="_ _b"></span>er<span class="_ _c"> </span>y<span class="_ _3"></span>ear<span class="ff9">,&quot;<span class="_ _26"> </span>said<span class="_ _d"> </span>Rome.</span></span></div><div class="t m0 xb hd y277 ffb fs7 fcc sc0 ls0 ws0">Meta<span class="_ _9"> </span>recently<span class="_ _9"> </span>made<span class="_ _21"> </span>a<span class="_ _9"> </span>1<span class="_ _21"> </span>character<span class="_ _9"> </span>change<span class="_ _21"> </span>to<span class="_ _9"> </span>their<span class="_ _9"> </span>codebase<span class="_ _21"> </span>which<span class="_ _9"> </span>saves<span class="_ _21"> </span>the</div><div class="t m0 x1 hd y278 ffb fs7 fcc sc0 ls0 ws0">equivalent<span class="_ _9"> </span>of<span class="_ _20"> </span>15,000<span class="_ _9"> </span>servers<span class="_ _9"> </span>in<span class="_ _21"> </span>capacity<span class="_ _9"> </span>per<span class="_ _21"> </span>year<span class="_ _31"> </span><span class="ff10 fs8"></span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">68/93</div><a class="l" href="https://x.com/DanielLockyer/status/1903042764566130911"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:19.047000px;width:391.471000px;height:11.656000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://x.com/DanielLockyer/status/1903042764566130911"><div class="d m1" style="border-style:none;position:absolute;left:27.350000px;bottom:4.656000px;width:245.897000px;height:11.153000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf4b" class="pf w0 h0" data-page-no="4b"><div class="pc pc4b w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Argument<span class="_ _1b"> </span>P<span class="_ _3"></span>assing<span class="_ _1b"> </span>-<span class="_ _9"> </span><span class="ff5">const<span class="_ _1b"> </span></span>P<span class="_ _3"></span>arameters<span class="_ _56"> </span>4/4</div><div class="t m0 x1a hb y279 ff5 fs6 fc0 sc0 ls0 ws0">const<span class="_ _10"> </span><span class="ff4">mo<span class="_ _b"></span>difier<span class="_ _c"> </span>applied<span class="_ _c"> </span>to<span class="_ _f"> </span>values,<span class="_ _c"> </span>p<span class="_ _0"></span>ointers,<span class="_ _c"> </span>references<span class="_ _c"> </span><span class="ff9">do<span class="_ _b"></span>es<span class="_ _c"> </span>not<span class="_ _f"> </span>p<span class="_ _3"></span>ro<span class="_ _b"></span>duce<span class="_ _f"> </span>b<span class="_ _b"></span>etter<span class="_ _c"> </span>co<span class="_ _0"></span>de</span></span></div><div class="t m0 x1 hb y27a ff4 fs6 fc0 sc0 ls0 ws0">in<span class="_ _c"> </span>most<span class="_ _c"> </span>cases,<span class="_ _f"> </span>but<span class="_ _c"> </span>it<span class="_ _f"> </span>is<span class="_ _c"> </span>useful<span class="_ _f"> </span>for<span class="_ _c"> </span>ensuring<span class="_ _c"> </span>read-only<span class="_ _c"> </span>accesses</div><div class="t m0 x1 hb y27b ff4 fs6 fc0 sc0 ls0 ws0">In<span class="_ _c"> </span>some<span class="_ _c"> </span>cases,<span class="_ _f"> </span>pass<span class="_ _10"> </span><span class="ff5">by-const<span class="_ _10"> </span></span>is<span class="_ _c"> </span>b<span class="_ _b"></span>eneficial<span class="_ _f"> </span>for<span class="_ _c"> </span>performance<span class="_ _c"> </span>b<span class="_ _b"></span>ecause<span class="_ _10"> </span><span class="ff6">const<span class="_ _10"> </span></span>memb<span class="_ _b"></span>er</div><div class="t m0 x1 hb y27c ff4 fs6 fc0 sc0 ls0 ws0">function<span class="_ _c"> </span>overloading<span class="_ _c"> </span>could<span class="_ _f"> </span>b<span class="_ _b"></span>e<span class="_ _f"> </span>cheap<span class="_ _b"></span>er<span class="_ _c"> </span>than<span class="_ _f"> </span>their<span class="_ _c"> </span>counterparts</div><div class="t m0 xb hd y27d ffb fs7 fcc sc0 ls0 ws0">GoTW#81:<span class="_ _20"> </span>Constant<span class="_ _1b"> </span>Optimization?</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">69/93</div><a class="l" href="http://www.gotw.ca/gotw/081.htm"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:5.272000px;width:152.628000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf4c" class="pf w0 h0" data-page-no="4c"><div class="pc pc4c w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff5 fs3 fc1 sc0 ls0 ws0">inline<span class="_ _1b"> </span><span class="ff1">F<span class="_ _3"></span>unction<span class="_ _1b"> </span>Declaration<span class="_ _57"> </span>1/3</span></div><div class="t m0 x1a hb y27e ff1 fs6 fc1 sc0 ls0 ws0">inline</div><div class="t m0 x5 hb y27f ff6 fs6 fc7 sc0 ls0 ws0">inline<span class="_ _10"> </span><span class="ff4 fc0">sp<span class="_ _b"></span>ecifier<span class="_ _c"> </span>for<span class="_ _c"> </span>optimization<span class="_ _c"> </span>purp<span class="_ _b"></span>oses<span class="_ _c"> </span>is<span class="_ _f"> </span>just<span class="_ _c"> </span>a<span class="_ _f"> </span>hint<span class="_ _c"> </span>for<span class="_ _c"> </span>the<span class="_ _c"> </span>compiler<span class="_ _c"> </span>that</span></div><div class="t m0 x1a hb y280 ff4 fs6 fc0 sc0 ls0 ws0">increases<span class="_ _c"> </span>the<span class="_ _c"> </span>heuristic<span class="_ _f"> </span>threshold<span class="_ _c"> </span>for<span class="_ _c"> </span><span class="ff1">inlining</span>,<span class="_ _f"> </span>namely<span class="_ _c"> </span>copying<span class="_ _c"> </span>the<span class="_ _c"> </span>function<span class="_ _c"> </span>b<span class="_ _0"></span>ody</div><div class="t m0 x1a hb y281 ff4 fs6 fc0 sc0 ls0 ws0">where<span class="_ _c"> </span>it<span class="_ _c"> </span>is<span class="_ _f"> </span>called</div><div class="t m0 x1 hc y282 ff5 fs4 fc9 sc0 ls0 ws0">inline<span class="_"> </span><span class="fc6">void<span class="_"> </span><span class="ff6 fc7">f<span class="fc0">()<span class="_"> </span>{<span class="_"> </span>...<span class="_"> </span>}</span></span></span></div><div class="t m0 xb hb y283 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">the<span class="_ _c"> </span>compiler<span class="_ _f"> </span>can<span class="_ _c"> </span>ignore<span class="_ _c"> </span>the<span class="_ _c"> </span>hint</span></div><div class="t m0 xb hb y284 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">Inlining<span class="_ _9"> </span><span class="ff4">can<span class="_ _f"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>very<span class="_ _f"> </span>effective<span class="_ _c"> </span>for<span class="_ _c"> </span>p<span class="_ _b"></span>erfo<span class="_ _3"></span>rmance<span class="_ _f"> </span>b<span class="_ _b"></span>ecause<span class="_ _c"> </span>it<span class="_ _f"> </span>can<span class="_ _c"> </span>merge<span class="_ _f"> </span>different</span></span></div><div class="t m0 x36 hb y285 ff4 fs6 fc0 sc0 ls0 ws0">functions<span class="_ _c"> </span>into<span class="_ _c"> </span>one,<span class="_ _f"> </span>allowing<span class="_ _c"> </span>constant<span class="_ _c"> </span>p<span class="_ _3"></span>ropagation,<span class="_ _f"> </span>eliminating<span class="_ _c"> </span>dead<span class="_ _f"> </span>co<span class="_ _b"></span>de,<span class="_ _c"> </span>or</div><div class="t m0 x36 hb y286 ff4 fs6 fc0 sc0 ls0 ws0">combining<span class="_ _c"> </span>instructions</div><div class="t m0 xb hb y287 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">inlined<span class="_ _9"> </span><span class="ff4">functions<span class="_ _c"> </span>increase<span class="_ _f"> </span>the<span class="_ _c"> </span>binary<span class="_ _c"> </span>size<span class="_ _c"> </span>b<span class="_ _b"></span>ecause<span class="_ _f"> </span>they<span class="_ _c"> </span>are<span class="_ _c"> </span>expanded<span class="_ _c"> </span>in-place<span class="_ _c"> </span>for</span></span></div><div class="t m0 x36 hb y288 ff4 fs6 fc0 sc0 ls0 ws0">every<span class="_ _c"> </span>function<span class="_ _c"> </span>call</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">70/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf4d" class="pf w0 h0" data-page-no="4d"><div class="pc pc4d w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAImklEQVR42u3ZMUoDURSG0XlhLlaDaxArVxAkdSBbsHA9bsIdWLgGwSKLyA5ShSmS3GbsxFIDkptwzgqG/zUfd9r9fNEBAEAZm/XnzAoAAFQjUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAA+NYy0woAANQRES6pAACUI1IBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpJgAAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAXKHeBL83jqMRTjAMgxEAgD9xSQUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAA59Uy0woAANQRES6pAACUI1IBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAD/ob+UD90fDqunZw8Gl+Xj/c0IAJygZaYVAACoIyL87gcAoByRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgDA1eh3L3dWAAB+2i5fjcAZPTyuWru9mXbHrpumySAAAJTwBWIZIwAUCjlJAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff5 fs3 fc1 sc0 ls0 ws0">inline<span class="_ _1b"> </span><span class="ff1">F<span class="_ _3"></span>unction<span class="_ _1b"> </span>Declaration<span class="_ _57"> </span>2/3</span></div><div class="t m0 x1 hb y289 ff1 fs6 fc0 sc0 ls0 ws0">Compilers<span class="_ _f"> </span>have<span class="_ _8"> </span>different<span class="_ _8"> </span>heuristics<span class="_ _8"> </span>fo<span class="_ _3"></span>r<span class="_ _8"> </span>function<span class="_ _8"> </span>inlining</div><div class="t m0 xb hb y28a ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Numb<span class="_ _b"></span>er<span class="_ _c"> </span>of<span class="_ _f"> </span>lines<span class="_ _c"> </span>(even<span class="_ _f"> </span>comments:<span class="_ _21"> </span><span class="ff6">How<span class="_"> </span>new-lines<span class="_"> </span>affect<span class="_"> </span>the<span class="_"> </span>Linux<span class="_"> </span>kernel</span></span></div><div class="t m0 x36 hb y28b ff6 fs6 fc0 sc0 ls0 ws0">performance<span class="_ _d"> </span><span class="ff10 fs8"></span><span class="ff4">).</span></div><div class="t m0 xb hb y28c ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Numb<span class="_ _b"></span>er<span class="_ _c"> </span>of<span class="_ _f"> </span>assembly<span class="_ _c"> </span>instructions.</span></div><div class="t m0 xb hb y28d ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Inlining<span class="_ _c"> </span>depth<span class="_ _f"> </span>(recursive).</span></div><div class="t m0 xb hb y28e ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _15"> </span><span class="ff6">-Winline<span class="_ _10"> </span><span class="ff4">w<span class="_ _3"></span>arns<span class="_ _c"> </span>when<span class="_ _c"> </span>a<span class="_ _c"> </span>function<span class="_ _f"> </span>mark<span class="_ _3"></span>ed<span class="_ _c"> </span>inline<span class="_ _c"> </span>could<span class="_ _f"> </span>not<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _f"> </span>substituted,<span class="_ _c"> </span>and</span></span></div><div class="t m0 x36 hb y28f ff4 fs6 fc0 sc0 ls0 ws0">gives<span class="_ _c"> </span>the<span class="_ _c"> </span>reason<span class="_ _f"> </span>for<span class="_ _c"> </span>the<span class="_ _c"> </span>failure.</div><div class="t m0 x30 h10 y290 ff1a fs7 fcc sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ffb">An<span class="_ _9"> </span>Inline<span class="_ _21"> </span>Function<span class="_ _9"> </span>is<span class="_ _9"> </span>As<span class="_ _21"> </span>Fast<span class="_ _9"> </span>As<span class="_ _21"> </span>a<span class="_ _9"> </span>Macro</span></div><div class="t m0 x30 h10 y291 ff1a fs7 fcc sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ffb">Inlining<span class="_ _9"> </span>Decisions<span class="_ _21"> </span>in<span class="_ _9"> </span>Visual<span class="_ _9"> </span>Studio</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">71/93</div><a class="l" href="https://nadav.amit.zone/linux/2018/10/10/newline.html"><div class="d m1" style="border-style:none;position:absolute;left:207.653000px;bottom:167.968000px;width:218.540000px;height:12.755000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://nadav.amit.zone/linux/2018/10/10/newline.html"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:152.387000px;width:74.001000px;height:12.754000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://gcc.gnu.org/onlinedocs/gcc/Inline.html"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:25.063000px;width:190.286000px;height:7.373000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://devblogs.microsoft.com/cppblog/inlining-decisions-in-visual-studio/"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:10.468000px;width:166.750000px;height:9.365000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf4e" class="pf w0 h0" data-page-no="4e"><div class="pc pc4e w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff5 fs3 fc1 sc0 ls0 ws0">inline<span class="_ _1b"> </span><span class="ff1">F<span class="_ _3"></span>unction<span class="_ _1b"> </span>Declaration<span class="_ _57"> </span>3/3</span></div><div class="t m0 x1 hb y292 ff4 fs6 fc0 sc0 ls0 ws0">Compiler<span class="_ _c"> </span>extensions<span class="_ _c"> </span>allow<span class="_ _c"> </span>to<span class="_ _c"> </span>manually<span class="_ _f"> </span><span class="ff9">fo<span class="_ _3"></span>rce<span class="_ _1b"> </span><span class="ff4">inline/non-inline<span class="_ _f"> </span>functions<span class="_ _c"> </span>with<span class="_ _c"> </span>attributes.</span></span></div><div class="t m0 x1 hb y293 ff4 fs6 fc0 sc0 ls0 ws0">Here<span class="_ _c"> </span><span class="fcd">C++17</span>attributes<span class="_ _c"> </span>are<span class="_ _c"> </span>adopted:</div><div class="t m0 x1 hb y294 ff4 fs6 fc0 sc0 ls0 ws0">GCC/Clang:</div><div class="t m0 x1 hd y295 ffb fs7 fc0 sc0 ls0 ws0">[[<span class="fc7">gnu::always_inline</span>]]<span class="_ _9"> </span><span class="ff5 fc6">void<span class="_"> </span></span>f()<span class="_ _9"> </span>{<span class="_ _21"> </span>...<span class="_ _9"> </span>}</div><div class="t m0 x1 hd y296 ffb fs7 fc0 sc0 ls0 ws0">[[<span class="fc7">gnu::noinline</span>]]<span class="_ _3b"> </span><span class="ff5 fc6">void<span class="_"> </span></span>f()<span class="_ _1b"> </span>{<span class="_ _21"> </span>...<span class="_ _9"> </span>}</div><div class="t m0 x1 hb y297 ff4 fs6 fc0 sc0 ls0 ws0">MSV<span class="_ _3"></span>C:</div><div class="t m0 x1 hd y298 ffb fs7 fc0 sc0 ls0 ws0">[[<span class="fc7">msvc::forceinline</span>]]<span class="_ _20"> </span><span class="ff5 fc6">void<span class="_"> </span></span>f()<span class="_ _1b"> </span>{<span class="_ _21"> </span>...<span class="_ _9"> </span>}</div><div class="t m0 x1 hd y299 ffb fs7 fc0 sc0 ls0 ws0">[[<span class="fc7">msvc::noinline</span>]]<span class="_ _47"> </span><span class="ff5 fc6">void<span class="_"> </span></span>f()<span class="_ _9"> </span>{<span class="_ _9"> </span>...<span class="_ _21"> </span>}</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">72/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf4f" class="pf w0 h0" data-page-no="4f"><div class="pc pc4f w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIX0lEQVR42u3YsQ3CMBRFURvFSskMUSomQIgaic2yRMZJkSGyAVVK3JiOBULxhc4Z4VVXL4/XewIAgDC2dTlZAQCAaEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAABfudZqBQAA4iileFIBAAhHpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFJNAACASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApJoAAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUA4H90+zRYAQD4iddjNgLHXW7PnM99298ptdYMAgBACB8jEhQE9BsB/AAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Inlining<span class="_ _1b"> </span>and<span class="_ _1b"> </span>Linkage</div><div class="t m0 xb hb y29a ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">A<span class="_ _c"> </span>function<span class="_ _f"> </span>with<span class="_ _c"> </span><span class="ff1">internal<span class="_ _8"> </span>linkage<span class="_ _c"> </span></span>is<span class="_ _f"> </span>not<span class="_ _c"> </span>visible<span class="_ _f"> </span>outside<span class="_ _c"> </span>the<span class="_ _f"> </span>current<span class="_ _c"> </span>translation</span></div><div class="t m0 x36 hb y29b ff4 fs6 fc0 sc0 ls0 ws0">unit,<span class="_ _c"> </span>allowing<span class="_ _c"> </span>the<span class="_ _c"> </span>compiler<span class="_ _c"> </span>to<span class="_ _f"> </span>p<span class="_ _b"></span>erform<span class="_ _c"> </span>aggressive<span class="_ _c"> </span><span class="ff9">inlining</span>.</div><div class="t m0 xb hb y29c ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">On<span class="_ _c"> </span>the<span class="_ _f"> </span>other<span class="_ _c"> </span>hand,<span class="_ _f"> </span><span class="ff1">external<span class="_ _f"> </span>linkage<span class="_ _f"> </span></span>do<span class="_ _b"></span>es<span class="_ _f"> </span>not<span class="_ _c"> </span>prevent<span class="_ _c"> </span>function<span class="_ _c"> </span>inlining<span class="_ _c"> </span>if<span class="_ _f"> </span>the</span></div><div class="t m0 x36 hb y29d ff4 fs6 fc0 sc0 ls0 ws0">function<span class="_ _c"> </span>b<span class="_ _b"></span>o<span class="_ _b"></span>dy<span class="_ _f"> </span>is<span class="_ _c"> </span>visible<span class="_ _f"> </span>in<span class="_ _c"> </span>a<span class="_ _f"> </span>translation<span class="_ _c"> </span>unit.<span class="_ _21"> </span>How<span class="_ _3"></span>ever,<span class="_ _c"> </span>function<span class="_ _c"> </span>side<span class="_ _f"> </span>effects<span class="_ _c"> </span>or</div><div class="t m0 x36 hb y29e ff4 fs6 fc0 sc0 ls0 ws0">internal<span class="_ _c"> </span>state<span class="_ _c"> </span>may<span class="_ _c"> </span>influence<span class="_ _c"> </span>the<span class="_ _f"> </span>compilers<span class="_ _c"> </span>decision.</div><div class="t m0 xb hb y29f ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">F<span class="_ _3"></span>unctions<span class="_ _f"> </span>with<span class="_ _c"> </span><span class="ff1">external<span class="_ _8"> </span>linkage<span class="_ _f"> </span></span>that<span class="_ _c"> </span>are<span class="_ _c"> </span>defined<span class="_ _c"> </span>in<span class="_ _c"> </span>a<span class="_ _f"> </span>different<span class="_ _c"> </span>translation<span class="_ _f"> </span>unit</span></div><div class="t m0 x36 hb y2a0 ff4 fs6 fc0 sc0 ls0 ws0">cannot<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _f"> </span>inlined.<span class="_ _21"> </span><span class="ff9">Link-time<span class="_ _c"> </span>optimization<span class="_ _f"> </span></span>(L<span class="_ _7"></span>TO)<span class="_ _f"> </span>may<span class="_ _c"> </span>enable<span class="_ _c"> </span>function<span class="_ _c"> </span>inlining</div><div class="t m0 x36 hb y2a1 ff4 fs6 fc0 sc0 ls0 ws0">across<span class="_ _c"> </span>translation<span class="_ _c"> </span>units.</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">73/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf50" class="pf w0 h0" data-page-no="50"><div class="pc pc50 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Symb<span class="_ _b"></span>ol<span class="_ _1b"> </span>Visibility</div><div class="t m0 x1 hb y1cb ff4 fs6 fc0 sc0 ls0 ws0">All<span class="_ _c"> </span>compilers,<span class="_ _c"> </span>except<span class="_ _d"> </span>MSVC,<span class="_ _d"> </span>exp<span class="_ _0"></span>o<span class="_ _3"></span>rt<span class="_ _c"> </span>all<span class="_ _d"> </span>function<span class="_ _c"> </span>symb<span class="_ _b"></span>ols<span class="_ _c"> </span><span class="fff">→<span class="_ _c"> </span></span>the<span class="_ _c"> </span>symb<span class="_ _b"></span>ols<span class="_ _c"> </span>can<span class="_ _c"> </span>be<span class="_ _c"> </span>used<span class="_ _c"> </span>in</div><div class="t m0 x1 hb y2a2 ff4 fs6 fc0 sc0 ls0 ws0">other<span class="_ _c"> </span>translation<span class="_ _c"> </span>units<span class="_ _f"> </span>and<span class="_ _c"> </span>may<span class="_ _c"> </span>influence<span class="_ _c"> </span>the<span class="_ _f"> </span>compilers<span class="_ _c"> </span>inlining<span class="_ _f"> </span>decision.</div><div class="t m0 x1 hb y2a3 ff4 fs6 fc0 sc0 ls0 ws0">Alternatives:</div><div class="t m0 xb hb y2a4 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Use<span class="_ _10"> </span><span class="ff6">static<span class="_ _10"> </span></span>functions</span></div><div class="t m0 xb hb y2a5 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Use<span class="_ _10"> </span><span class="ff6">anonymous<span class="_"> </span>namespace<span class="_ _10"> </span></span>(functions<span class="_ _c"> </span>and<span class="_ _c"> </span>classes)</span></div><div class="t m0 xb hb y2a6 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Use<span class="_ _c"> </span>GNU<span class="_ _f"> </span>extension<span class="_ _c"> </span>(also<span class="_ _f"> </span><span class="ff6">clang</span>)<span class="_ _10"> </span><span class="ff6">__attribute__((visibility(&quot;hidden&quot;)))</span></span></div><div class="t m0 xb hd y2a7 ffb fs7 fcc sc0 ls0 ws0">gcc.gnu.org/wiki/Visibility</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">74/93</div><a class="l" href="https://gcc.gnu.org/wiki/Visibility"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:3.462000px;width:129.091000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf51" class="pf w0 h0" data-page-no="51"><div class="pc pc51 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIlUlEQVR42u3ZMUoDURSG0XlhLlaDawhWs4IgkiJFwJ25CfeSQgt3YJMdWIWpvM2kENIJFuLcyDkrePzTfNxpd5uHDgAAyji+va6sAABANSIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAICLlplWAACgjohwSQUAoByRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAAPALehMAAHxnmqYreu0wDP9meZdUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAALCslplWAACgjohwSQUAoByRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAP9Rfy0PH7c7XWtz7y8EIAMAfaJlpBQAA6ogIv/sBAChHpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFJNAACASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAFTQn57WVgAAFvexfzYCX8b7x9Zub+bTZ9fN82wQAABKOANLaiAAh/VU5AAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Pure<span class="_ _1b"> </span>F<span class="_ _3"></span>unctions<span class="_ _58"> </span>1/2</div><div class="t m0 x1 hb y6d ff1 fs6 fc0 sc0 ls0 ws0">Pure<span class="_ _f"> </span>functions<span class="_ _f"> </span><span class="ff4">have<span class="_ _c"> </span><span class="ff9">no<span class="_ _f"> </span>side<span class="_ _c"> </span>effect<span class="_ _9"> </span></span>on<span class="_ _c"> </span>its<span class="_ _f"> </span>parameters<span class="_ _c"> </span>and<span class="_ _c"> </span>dont<span class="_ _c"> </span>mo<span class="_ _b"></span>dify<span class="_ _f"> </span>global</span></div><div class="t m0 x1 hb ye9 ff4 fs6 fc0 sc0 ls0 ws0">va<span class="_ _3"></span>riables.</div><div class="t m0 x1 hb y101 ff9 fs6 fc0 sc0 ls0 ws0">Pure<span class="_ _c"> </span>functions<span class="_ _1b"> </span><span class="ff4">can<span class="_ _c"> </span>access<span class="_ _c"> </span>global<span class="_ _f"> </span>va<span class="_ _3"></span>riables.<span class="_ _21"> </span>On<span class="_ _c"> </span>the<span class="_ _c"> </span>other<span class="_ _f"> </span>hand,<span class="_ _c"> </span>they<span class="_ _c"> </span>can<span class="_ _c"> </span>only<span class="_ _c"> </span>call<span class="_ _f"> </span>other</span></div><div class="t m0 x1 hb y102 ff9 fs6 fc0 sc0 ls0 ws0">pure<span class="_ _c"> </span>functions<span class="ff4">,<span class="_ _c"> </span>cannot<span class="_ _f"> </span>mo<span class="_ _b"></span>dify<span class="_ _f"> </span>input<span class="_ _c"> </span>p<span class="_ _b"></span>ointers<span class="_ _f"> </span>o<span class="_ _3"></span>r<span class="_ _f"> </span>references,<span class="_ _c"> </span>and<span class="_ _f"> </span>must<span class="_ _c"> </span>have<span class="_ _f"> </span>non-<span class="_ _26"> </span><span class="ff6">void</span></span></div><div class="t m0 x1 hb y103 ff4 fs6 fc0 sc0 ls0 ws0">return<span class="_ _c"> </span>type.</div><div class="t m0 x1 hb y2a8 ff4 fs6 fc0 sc0 ls0 ws0">Main<span class="_ _c"> </span>property:<span class="_ _9"> </span><span class="ff6">Referential<span class="_"> </span>transparency<span class="_ _d"> </span><span class="ff10 fs8"><span class="_ _c"> </span></span><span class="fff">→<span class="_ _c"> </span><span class="ff9">Pure<span class="_ _f"> </span>functions<span class="_ _9"> </span></span></span></span>alw<span class="_ _3"></span>ays<span class="_ _c"> </span>returns<span class="_ _c"> </span>the</div><div class="t m0 x1 hb y2a9 ff4 fs6 fc0 sc0 ls0 ws0">same<span class="_ _c"> </span>output<span class="_ _c"> </span>for<span class="_ _c"> </span>the<span class="_ _c"> </span>same<span class="_ _f"> </span>inputs,<span class="_ _c"> </span>without<span class="_ _f"> </span>affecting<span class="_ _c"> </span>the<span class="_ _f"> </span>p<span class="_ _3"></span>rogram<span class="_ _f"> </span>state.</div><div class="t m0 x1 hb y2aa ff9 fs6 fc0 sc0 ls0 ws0">Pure<span class="_ _c"> </span>functions<span class="_ _9"> </span><span class="ff4">allo<span class="_ _3"></span>w<span class="_ _f"> </span>the<span class="_ _c"> </span>following<span class="_ _c"> </span>optimizations:</span></div><div class="t m0 xb hb y2ab ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">Common<span class="_ _c"> </span>Sub-expression<span class="_ _c"> </span>Elimination<span class="ff4">:<span class="_ _21"> </span>when<span class="_ _c"> </span>the<span class="_ _f"> </span>function<span class="_ _c"> </span>is<span class="_ _f"> </span>called<span class="_ _c"> </span>multiple<span class="_ _f"> </span>times</span></span></div><div class="t m0 x36 hb y2ac ff4 fs6 fc0 sc0 ls0 ws0">with<span class="_ _c"> </span>the<span class="_ _c"> </span>same<span class="_ _f"> </span>arguments.</div><div class="t m0 xb hb y2ad ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">Dead-Co<span class="_ _b"></span>de<span class="_ _c"> </span>Elimination<span class="_ _b"></span><span class="ff4">:<span class="_ _21"> </span>if<span class="_ _c"> </span>the<span class="_ _f"> </span>result<span class="_ _c"> </span>value<span class="_ _f"> </span>o<span class="_ _3"></span>r<span class="_ _f"> </span>subsequent<span class="_ _c"> </span>op<span class="_ _b"></span>erations<span class="_ _f"> </span>are<span class="_ _c"> </span>not<span class="_ _c"> </span>used,</span></span></div><div class="t m0 x36 hb y2ae ff4 fs6 fc0 sc0 ls0 ws0">the<span class="_ _c"> </span>function<span class="_ _c"> </span>can<span class="_ _f"> </span>b<span class="_ _b"></span>e<span class="_ _f"> </span>removed<span class="_ _c"> </span>b<span class="_ _b"></span>ecause<span class="_ _f"> </span>it<span class="_ _c"> </span>do<span class="_ _b"></span>esnt<span class="_ _f"> </span>mo<span class="_ _b"></span>dify<span class="_ _c"> </span>the<span class="_ _f"> </span>program<span class="_ _c"> </span>state.</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">75/93</div><a class="l" href="https://en.wikipedia.org/wiki/Referential_transparency"><div class="d m1" style="border-style:none;position:absolute;left:99.592000px;bottom:117.697000px;width:148.455000px;height:12.694000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf52" class="pf w0 h0" data-page-no="52"><div class="pc pc52 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIrUlEQVR42u3ZsU0DQRCG0Vt0I6IVNSAiKkCIGMktEFAPTdABATUgEVAEHRBZG2AmOTJyO7Dm8HsVrP5LPs21q5u7CQAAyvj8eD+zAgAA1YhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAAD+tMy0AgAAdUSESyoAAOWIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAANjTvKK3jjF8MACAw/TeV/Ral1QAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAESqCQAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQDguFpmWgEAgDoiwiUVAIByRCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACLVBAAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAALCfeUVvHWP4YP9b790IAMDkkgoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAABxZy0wrAABQR0S4pAIAUI5IBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAcLrmtTz0e7fbPDz6YLAub68vRgDgAC0zrQAAQB0R4Xc/AADliFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAoJR5+3RpBQCgsq/7ZyOclOvbTWsX58v2Z5qWZTEIAAAl/AI7Zyj+XjUtuQAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Pure<span class="_ _1b"> </span>F<span class="_ _3"></span>unctions<span class="_ _58"> </span>2/2</div><div class="t m0 x1 hf y113 ff5 fs5 fc6 sc0 ls0 ws0">double<span class="_"> </span><span class="ffc fc7">pow2<span class="fc0">(</span></span>double<span class="_"> </span><span class="ffc fc0">x);<span class="_ _1b"> </span><span class="ffa fc5">//<span class="_ _8"> </span>defined<span class="_ _1b"> </span>in<span class="_ _8"> </span>another<span class="_ _1b"> </span>translation<span class="_ _8"> </span>unit</span></span></div><div class="t m0 x1 hf y115 ff5 fs5 fc6 sc0 ls0 ws0">double<span class="_"> </span><span class="ffc fc7">caller<span class="fc0">(</span></span>double<span class="_"> </span><span class="ffc fc0">v)<span class="_ _1b"> </span>{</span></div><div class="t m0 xf hf y116 ff5 fs5 fc6 sc0 ls0 ws0">double<span class="_"> </span><span class="ffc fc0">x<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>pow2(v)<span class="_ _1b"> </span><span class="fc8">+<span class="_ _8"> </span></span>pow2(v);<span class="_ _1b"> </span><span class="ffa fc5">//<span class="_ _1b"> </span>generates<span class="_ _8"> </span>4<span class="_ _1b"> </span>calls</span></span></div><div class="t m0 xf hf y117 ff5 fs5 fc6 sc0 ls0 ws0">double<span class="_"> </span><span class="ffc fc0">y<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span></span>pow2(v)<span class="_ _1b"> </span><span class="fc8">+<span class="_ _8"> </span></span>pow2(v);</span></div><div class="t m0 xf hf y118 ff5 fs5 fc9 sc0 ls0 ws0">return<span class="_"> </span><span class="ffc fc0">x<span class="_ _8"> </span><span class="fc8">+<span class="_ _1b"> </span></span>y;</span></div><div class="t m0 x1 hf y119 ffc fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hb y2af ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _c"> </span>compiler<span class="_ _c"> </span>automatically<span class="_ _f"> </span>recognizes<span class="_ _c"> </span><span class="ff9">pure<span class="_ _f"> </span>functions<span class="_ _9"> </span></span>when<span class="_ _c"> </span>they<span class="_ _f"> </span>a<span class="_ _3"></span>re<span class="_ _f"> </span>entirely<span class="_ _c"> </span>visible<span class="_ _f"> </span>in</div><div class="t m0 x1 hb y2b0 ff4 fs6 fc0 sc0 ls0 ws0">a<span class="_ _c"> </span>translation<span class="_ _c"> </span>unit.<span class="_ _21"> </span><span class="ff9">Link-Time-Optimization<span class="_ _8"> </span></span>can<span class="_ _c"> </span>help<span class="_ _c"> </span>to<span class="_ _f"> </span>optimize<span class="_ _c"> </span>them<span class="_ _f"> </span>across</div><div class="t m0 x1 hb y2b1 ff4 fs6 fc0 sc0 ls0 ws0">translation<span class="_ _c"> </span>units.<span class="_ _21"> </span>ASM<span class="_ _c"> </span>statements<span class="_ _f"> </span>prevent<span class="_ _c"> </span>their<span class="_ _c"> </span>detection.</div><div class="t m0 x1 hb y2b2 ff4 fs6 fc0 sc0 ls0 ws0">Clang/GCC<span class="_ _c"> </span>allow<span class="_ _c"> </span>to<span class="_ _c"> </span>explicitly<span class="_ _c"> </span>mark<span class="_ _3"></span>ed<span class="_ _c"> </span><span class="ff9">pure<span class="_ _f"> </span>function<span class="_ _f"> </span></span>with<span class="_ _c"> </span>the<span class="_ _f"> </span>attribute</div><div class="t m0 x1a hb y2b3 ff6 fs6 fc0 sc0 ls0 ws0">[[gnu::pure]]<span class="_ _26"> </span><span class="ff4">.</span></div><div class="t m0 xb hd y2b4 ffb fs7 fcc sc0 ls0 ws0">Pure<span class="_ _9"> </span>functions<span class="_ _9"> </span>in<span class="_ _21"> </span>C++</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">76/93</div><a class="l" href="https://soroush.github.io/en/2020/08/06/pure-functions-in-cpp"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:3.276000px;width:100.847000px;height:13.444000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf53" class="pf w0 h0" data-page-no="53"><div class="pc pc53 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAItUlEQVR42u3ZsUkEQRiG4R3ZH6PFGsTIwFjESFC4FgysxybswMASRDSwAxM7MDo28Pw5WTMjIwVv5vZ5Khi+SV5mysHxaQcAANV4fX7asQIAALURqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAfCuZaQUAAOoREV5SAQCojkgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAABsUm8CAOBH6/Xn0dn5Bg/w8njvFmarZKYVAACoR0T47gcAoDoiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkWoCAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAoGV9Q2cdx9GFzdwwDEYAgDnwkgoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAPyrkplWAACgHhHhJRUAgOqIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgDAX/StHPR9tVpcXrkwaMvD3a0RAPiFkplWAACgHhHhux8AgOqIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCw3frl9b4VAIB2vV3cGGHLHJ4sStnbnZYfXTdNk0EAAKjCF7G5K/4NXoOAAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Constant<span class="_ _1b"> </span>F<span class="_ _3"></span>unctions</div><div class="t m0 x1 hb y6d ff1 fs6 fc0 sc0 ls0 ws0">Constant<span class="_ _f"> </span>Functions<span class="_ _c"> </span><span class="ff4">have<span class="_ _c"> </span><span class="ff9">no<span class="_ _f"> </span>side<span class="_ _c"> </span>effect<span class="_ _9"> </span></span>on<span class="_ _c"> </span>its<span class="_ _f"> </span>pa<span class="_ _3"></span>rameters<span class="_ _f"> </span>and<span class="_ _c"> </span>dont<span class="_ _f"> </span>refer<span class="_ _c"> </span>global</span></div><div class="t m0 x1 hb ye9 ff4 fs6 fc0 sc0 ls0 ws0">va<span class="_ _3"></span>riables.<span class="_ _21"> </span>They<span class="_ _f"> </span>a<span class="_ _3"></span>re<span class="_ _f"> </span>a<span class="_ _c"> </span>stricter<span class="_ _f"> </span>case<span class="_ _c"> </span>of<span class="_ _f"> </span><span class="ff9">pure<span class="_ _c"> </span>functions</span>.</div><div class="t m0 x1 hb y2b5 ff9 fs6 fc0 sc0 ls0 ws0">Constant<span class="_ _c"> </span>functions<span class="_ _9"> </span><span class="ff4">allo<span class="_ _3"></span>w<span class="_ _f"> </span>further<span class="_ _c"> </span>optimizations:</span></div><div class="t m0 xb hb y2b6 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">Strong<span class="_ _c"> </span>Common<span class="_ _f"> </span>Sub-exp<span class="_ _3"></span>ression<span class="_ _f"> </span>Elimination<span class="ff4">:<span class="_ _21"> </span>this<span class="_ _f"> </span>optimization<span class="_ _c"> </span>can<span class="_ _f"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>applied</span></span></div><div class="t m0 x36 hb y2b7 ff4 fs6 fc0 sc0 ls0 ws0">even<span class="_ _c"> </span>fo<span class="_ _3"></span>r<span class="_ _c"> </span>non-subsequent<span class="_ _c"> </span>statements<span class="_ _c"> </span>b<span class="_ _b"></span>ecause<span class="_ _c"> </span>mo<span class="_ _b"></span>dification<span class="_ _c"> </span>of<span class="_ _c"> </span>the<span class="_ _d"> </span>global<span class="_ _c"> </span>state<span class="_ _c"> </span>dont</div><div class="t m0 x36 hb y2b8 ff4 fs6 fc0 sc0 ls0 ws0">affect<span class="_ _c"> </span>them.</div><div class="t m0 xb hb y2b9 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff9">Lo<span class="_ _b"></span>op<span class="_ _c"> </span>optimizations<span class="_ _3c"></span><span class="ff4">:<span class="_ _9"> </span>thanks<span class="_ _f"> </span>to<span class="_ _c"> </span>the<span class="_ _f"> </span>ab<span class="_ _b"></span>ove<span class="_ _c"> </span>property<span class="_ _7"></span>,<span class="_ _c"> </span><span class="ff9">constant<span class="_ _c"> </span>functions<span class="_ _9"> </span></span>within<span class="_ _f"> </span>a</span></span></div><div class="t m0 x36 hb y2ba ff4 fs6 fc0 sc0 ls0 ws0">lo<span class="_ _b"></span>op<span class="_ _c"> </span>can<span class="_ _f"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>reordered<span class="_ _c"> </span>a<span class="_ _3"></span>rbitrarily</div><div class="t m0 x1 hb y2bb ff4 fs6 fc0 sc0 ls0 ws0">Clang/GCC<span class="_ _c"> </span>allow<span class="_ _c"> </span>to<span class="_ _c"> </span>explicitly<span class="_ _c"> </span>mark<span class="_ _3"></span>ed<span class="_ _c"> </span><span class="ff9">constant<span class="_ _f"> </span>function<span class="_ _f"> </span></span>with<span class="_ _c"> </span>the<span class="_ _f"> </span>attribute</div><div class="t m0 x1a hb y2bc ff6 fs6 fc0 sc0 ls0 ws0">[[gnu::const]]<span class="_ _26"> </span><span class="ff4">.</span></div><div class="t m0 xb hd y2bd ffb fs7 fcc sc0 ls0 ws0">Implications<span class="_ _9"> </span>of<span class="_ _9"> </span>pure<span class="_ _21"> </span>and<span class="_ _9"> </span>constant<span class="_ _21"> </span>functions</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">77/93</div><a class="l" href="https://lwn.net/Articles/285332/"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:1.831000px;width:204.409000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf54" class="pf w0 h0" data-page-no="54"><div class="pc pc54 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">P<span class="_ _3"></span>ointers<span class="_ _1b"> </span>Aliasing<span class="_ _59"> </span>1/4</div><div class="t m0 x1 hb y2be ff4 fs6 fc0 sc0 ls0 ws0">Consider<span class="_ _c"> </span>the<span class="_ _c"> </span>following<span class="_ _c"> </span>example:</div><div class="t m0 x1 hd y2bf ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>suppose<span class="_ _9"> </span>f()<span class="_ _21"> </span>is<span class="_ _9"> </span>not<span class="_ _21"> </span>inline</div><div class="t m0 x1 hd y2c0 ff5 fs7 fc6 sc0 ls0 ws0">void<span class="_"> </span><span class="ffb fc7">f<span class="fc0">(</span></span>int<span class="ffb fc8">*<span class="_ _9"> </span><span class="fc0">input,<span class="_ _9"> </span></span></span>int<span class="_"> </span><span class="ffb fc0">size,<span class="_ _21"> </span></span>int<span class="ffb fc8">*<span class="_ _9"> </span><span class="fc0">output)<span class="_ _21"> </span>{</span></span></div><div class="t m0 xd hd y2c1 ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>size;<span class="_ _9"> </span>i<span class="fc8">++</span>)</span></span></div><div class="t m0 x16 hd y2c2 ffb fs7 fc0 sc0 ls0 ws0">output[i]<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>input[i];</div><div class="t m0 x1 hd y2c3 ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xb hb y2c4 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">The<span class="_ _c"> </span>compiler<span class="_ _f"> </span>cannot<span class="_ _c"> </span><span class="ff9">unroll<span class="_ _9"> </span></span>the<span class="_ _f"> </span>lo<span class="_ _b"></span>op<span class="_ _c"> </span>(sequential<span class="_ _f"> </span>execution,<span class="_ _c"> </span>no<span class="_ _f"> </span>ILP)<span class="_ _c"> </span>b<span class="_ _b"></span>ecause</span></div><div class="t m0 xc hb y2c5 ff6 fs6 fc0 sc0 ls0 ws0">output<span class="_ _10"> </span><span class="ff4">and<span class="_ _10"> </span></span>input<span class="_ _10"> </span><span class="ff4">pointers<span class="_ _f"> </span>can<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _f"> </span><span class="ff1">aliased</span>,<span class="_ _c"> </span>e.g.<span class="_ _4"> </span></span>output<span class="_"> </span>=<span class="_"> </span>input<span class="_"> </span>+<span class="_"> </span>1</div><div class="t m0 xb hb y2c6 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">The<span class="_ _c"> </span>aliasing<span class="_ _c"> </span>problem<span class="_ _c"> </span>is<span class="_ _c"> </span>even<span class="_ _c"> </span>wo<span class="_ _3"></span>rse<span class="_ _c"> </span>for<span class="_ _d"> </span>more<span class="_ _c"> </span>complex<span class="_ _c"> </span>co<span class="_ _b"></span>de<span class="_ _c"> </span>and<span class="_ _c"> </span><span class="ff9">inhibits<span class="_ _f"> </span>all<span class="_ _c"> </span>kinds<span class="_ _c"> </span>of</span></span></div><div class="t m0 x36 hb y2c7 ff9 fs6 fc0 sc0 ls0 ws0">optimization<span class="_ _f"> </span><span class="ff4">including<span class="_ _c"> </span>co<span class="_ _b"></span>de<span class="_ _f"> </span>re-order<span class="_ _3"></span>ing,<span class="_ _f"> </span>vectorization,<span class="_ _c"> </span>common<span class="_ _c"> </span>sub-exp<span class="_ _3"></span>ression</span></div><div class="t m0 x36 hb y2c8 ff4 fs6 fc0 sc0 ls0 ws0">elimination,<span class="_ _c"> </span>etc.</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">78/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf55" class="pf w0 h0" data-page-no="55"><div class="pc pc55 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIj0lEQVR42u3YsU0DQRCG0Vt0I0crakBEVIAsx0h0RhOUQ0ARdEBkbcQk58guwDqJOfu9Cu7+TT5Ne349TAAAUMbP99eDFQAAqEakAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAABw0TLTCgAA1BERLqkAAJQjUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAuJhv4B/GGB7yv/TejQAArM4lFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAbFvLTCsAAFBHRLikAgBQjkgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAICVzRv61jGGBwMAuE7vfUNf65IKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBINQEAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAKyrZaYVAACoIyJcUgEAKEekAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUk0AAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAMDZfPx4sgIAcJ9+3z6NUNDL/r21x91y/JumZVkMAgBACSfJZiAAOpA94AAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">P<span class="_ _3"></span>ointers<span class="_ _1b"> </span>Aliasing<span class="_ _59"> </span>2/4</div><div class="t m0 x1 hb y18c ff4 fs6 fc0 sc0 ls0 ws0">Most<span class="_ _c"> </span>compilers<span class="_ _c"> </span>(included<span class="_ _f"> </span><span class="ff6">GCC/Clang/MSVC</span>)<span class="_ _c"> </span>provide<span class="_ _c"> </span><span class="ff1">restricted<span class="_ _8"> </span>p<span class="_ _b"></span>ointers</span></div><div class="t m0 x1 hb y18d ff4 fs6 fc0 sc0 ls0 ws0">(<span class="_ _26"> </span><span class="ff6 fc7">__restrict<span class="_ _d"> </span></span>)<span class="_ _c"> </span>so<span class="_ _f"> </span>that<span class="_ _c"> </span>the<span class="_ _f"> </span>programmer<span class="_ _c"> </span>asserts<span class="_ _c"> </span>that<span class="_ _c"> </span>the<span class="_ _c"> </span>p<span class="_ _0"></span>ointers<span class="_ _c"> </span>a<span class="_ _3"></span>re<span class="_ _c"> </span>not<span class="_ _f"> </span>aliased</div><div class="t m0 x1 hd y2c9 ff5 fs7 fc6 sc0 ls0 ws0">void<span class="_"> </span><span class="ffb fc7">f<span class="fc0">(</span></span>int<span class="ffb fc8">*<span class="_ _9"> </span></span><span class="fc9">__restrict<span class="_"> </span><span class="ffb fc0">input,</span></span></div><div class="t m0 x38 hd y2ca ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_ _5a"> </span><span class="ffb fc0">size,</span></div><div class="t m0 x38 hd y2cb ff5 fs7 fc6 sc0 ls0 ws0">int<span class="ffb fc8">*<span class="_ _9"> </span></span><span class="fc9">__restrict<span class="_"> </span><span class="ffb fc0">output)<span class="_ _9"> </span>{</span></span></div><div class="t m0 xd hd y2cc ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>size;<span class="_ _9"> </span>i<span class="fc8">++</span>)</span></span></div><div class="t m0 x16 hd y2cd ffb fs7 fc0 sc0 ls0 ws0">output[i]<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>input[i];</div><div class="t m0 x1 hd y2ce ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hb y2cf ff4 fs6 fc0 sc0 ls0 ws0">P<span class="_ _3"></span>otential<span class="_ _f"> </span>b<span class="_ _b"></span>enefits:</div><div class="t m0 xb hb y2d0 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Instruction-level<span class="_ _c"> </span>parallelism</span></div><div class="t m0 xb hb y2d1 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Less<span class="_ _c"> </span>instructions<span class="_ _f"> </span>executed</span></div><div class="t m0 xb hb y2d2 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Merge<span class="_ _c"> </span>common<span class="_ _f"> </span>sub-exp<span class="_ _3"></span>ressions</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">79/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf56" class="pf w0 h0" data-page-no="56"><div class="pc pc56 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">P<span class="_ _3"></span>ointers<span class="_ _1b"> </span>Aliasing<span class="_ _59"> </span>3/4</div><div class="t m0 x1 hb ydc ff1 fs6 fc0 sc0 ls0 ws0">Benchma<span class="_ _3"></span>rking<span class="_ _8"> </span>matrix<span class="_ _8"> </span>multiplication</div><div class="t m0 x1 hd y2d3 ff5 fs7 fc6 sc0 ls0 ws0">void<span class="_"> </span><span class="ffb fc7">matrix_mul_v1<span class="fc0">(</span></span><span class="fc9">const<span class="_"> </span></span>int<span class="ffb fc8">*<span class="_ _9"> </span><span class="fc0">A,</span></span></div><div class="t m0 x41 hd y2d4 ff5 fs7 fc9 sc0 ls0 ws0">const<span class="_"> </span><span class="fc6">int<span class="ffb fc8">*<span class="_ _9"> </span><span class="fc0">B,</span></span></span></div><div class="t m0 x41 hd y2d5 ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_ _5b"> </span><span class="ffb fc0">N,</span></div><div class="t m0 x41 hd y2d6 ff5 fs7 fc6 sc0 ls0 ws0"><span class="fce sc0">int</span><span class="ffb fc8"><span class="fce sc0">*</span><span class="_ _36"> </span><span class="fc0"><span class="fce sc0">C)</span><span class="_ _21"> </span><span class="fce sc0">{</span></span></span></div><div class="t m0 x1 hd y2d7 ff5 fs7 fc6 sc0 ls0 ws0">void<span class="_"> </span><span class="ffb fc7">matrix_mul_v2<span class="fc0">(</span></span><span class="fc9">const<span class="_"> </span></span>int<span class="ffb fc8">*<span class="_ _9"> </span></span><span class="fc9">__restrict<span class="_"> </span><span class="ffb fc0">A,</span></span></div><div class="t m0 x41 hd y2d8 ff5 fs7 fc9 sc0 ls0 ws0">const<span class="_"> </span><span class="fc6">int<span class="ffb fc8">*<span class="_ _9"> </span></span></span>__restrict<span class="_"> </span><span class="ffb fc0">B,</span></div><div class="t m0 x41 hd y2d9 ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_ _5c"> </span><span class="ffb fc0">N,</span></div><div class="t m0 x41 hd y2da ff5 fs7 fc6 sc0 ls0 ws0">int<span class="ffb fc8">*<span class="_ _36"> </span></span><span class="fc9">__restrict<span class="_"> </span><span class="ffb fc0">C)<span class="_ _21"> </span>{</span></span></div><div class="t m0 x41 hd y2db ff5 fs7 fc0 sc0 ls0 ws0">Optimization<span class="_ _33"> </span><span class="ffb">-O1<span class="_ _4e"> </span>-O2<span class="_ _5d"> </span>-O3</span></div><div class="t m0 x41 h10 y2dc ffb fs7 fc0 sc0 ls0 ws0">v1<span class="_ _5e"> </span><span class="ffe">1,030<span class="_ _d"> </span>ms<span class="_ _19"> </span>777<span class="_ _d"> </span>ms<span class="_ _5f"> </span>777<span class="_ _d"> </span>ms</span></div><div class="t m0 x41 h10 y2dd ffb fs7 fc0 sc0 ls0 ws0">v2<span class="_ _60"> </span><span class="ffe">513<span class="_ _d"> </span>ms<span class="_ _19"> </span>510<span class="_ _d"> </span>ms<span class="_ _5f"> </span>761<span class="_ _d"> </span>ms</span></div><div class="t m0 x41 h10 y2de ffb fs7 fc0 sc0 ls0 ws0">Speedup<span class="_ _61"> </span><span class="ffe">2.0x<span class="_ _62"> </span>1.5x<span class="_ _27"> </span>1.02x</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">80/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf57" class="pf w0 h0" data-page-no="57"><div class="pc pc57 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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8Zff/NdDkvSj771haJK2lOHD173nirlzm8RqzrRoZDGeO/n0G664oqUM75q34EPvvNblebP3LpQ+z+fNnPXR997QFGMaoxM7/E3NjvjMy95MVbyoq6bOcmKqMbgQnR317ah38nse4g0vf9SbaBTnk1JCYuaCqTkfnamVJCoA9CeMpAL98/WjCyGWefHOq6667uprY1G0anL9e987cEDbwoV3LVnyxNe//nURvfXWH990003NTU2f+PjNEi1xPkvSUJQxL77zX/7r937wg1GjRl1y0cWPPLho966O2267fdr06ePGjbv60vmf/MynfZb+4O/+/n3vuq65pXbWuWeHhbeLeDY8AKC//EvIJgD6oWjReZem6YP33b+1vf2n//N/zZp+Vuzueeyhh66+7LI555y7Y9Pmn/2v/3XXbbc//tDD7etfuPVHP9beKwQ4MZkwdvwLa9bPu+ht8+Zc9OSjj6eaTJ0y9fs/+MHwkSN/9otffPC692zbsPGZJUtvvOH6H/zg+53dnf/m3//bQpmzHgDQjzCSCvRHqi7P85rzTlVNYhliGRL123ftvPOuhffed+/KdWs+9rGPTz/7zE3t7ZNVRb14v/Ceeza/uHnS1CmnnzHlgQcf+JNPf0ZjXPncykmnT167/oV777/vpj/8g3oIzkTKsLm9fd2atepcT5FL6mMint3dAIB+g5FUoJ/yzkczU921d8+HP/7R1RvWJ63N7/3wh4eOHztu2pQv/NnXhk8Y98Szz27bv2/81Ck3fewjudq3/st/+u4P/+eUs8/6yT/+YsXzzx/s6dm7b//q9eskTULi7nlo0fbdHZ/+7J/8/PbbJ0yZ8t7339g6eHBQNedLE3Hs6wcA9COMpAL98uWjiYiYSHDy7/7jf1AztfjThbeX4nySxBg+/qlPlyGYWZalixb/1qszp109B9va2vJG7syGDR7aEHv48UfLxN153z13PHCvZMm//L+/YTGmUR94enl3Xk+d90GWrvhKUB/FU6kAACIVwKupJskXlSgSJFbn0pu4JGamGs1CMKc+TZN6o5GmSSMUzie+pamzaIhYS6127vnn3XX/vffefbc2ZY0id4mPMSSJt6BFlvSUedbS0mjkmYpF9UnWKMv0uK/mBAAAkQr8k4pUsWimqsFMVLx6EXEmqSb1svBpGvLCqRZlKanLLTjnRVRMnHqfukZR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t96am5vb1tb24x//ePRml4yMjOrq6sOHDy9ZsmTbtm3xeHz16tWWZfX391PD00pLS8vdd9/9xhtvVFZWWpYVCASamprS09NramrS09NbWlo8Hs/Ro0dPnjx56tSphx56KJFI9PT0pKWlGWOysrJ6enruuecedzolJeXtt9+urq42xjCCFzCVj2+5ux/AeHEc55133nnggQeoClynaDTa0NCwZs2ar78EkxveganK6/USUgGMm97e3qysLNu2yQ24Tp2dnYFAQHDVKUBIBQBgstFau0NpAJiGIZU/fgDAJEVCBab1HoAqAAAAACEVAAAAIKQCAACAkAoAAAAQUgEAAEBIBQAAAAipAAAAIKQCAAAAhFQAuCZfP2Dm9Q+nyYCcAEBIBYCxMcYYYy6fGBoaEkI0NTVFo1H39Svm37t3r+M4AwMD9fX127dvb2xsdBzn2LFjdXV1dXV1O3fuDIVCzc3NWmshxKFDh3p7e0ffHgqFtNb79u0bXek3lnDXrl3uokKh0MaNGx3HMca8/fbbyWRyTL9pIpFIJpNNTU1nzpz5qqoYnT5w4ACDXQMgpALAdyASibS0tJw4cSIUCu3Zs+fgwYN9fX1NTU1/+tOfGhsb/X6/Gw0PHz787rvvjibCkydPdnV1KaUef/zx0tLSH/7wh/X19X19fW1tbclk8s4771RKvffee83NzW7ma25ubmtrE0JorXfv3v23v/3t5MmTaWlpiUSivb399OnTLS0tg4OD7jyxWGz//v1ffPHF5cmyp6fHHdUzEok0Nzdv3rw5Ho8fOHAgmUx+/vnnx48fHxoaMsY4jnPo0KFPP/1Uax2NRru6ug4fPnz06FEx0pX7l7/85cMPPywqKkpLS+vq6uru7naTaFNTU3t7u7v8hoaGpqYmIYRlWdu2baORACCkAsB/WygUev7558+ePRsOh2fPnh0KhV566SXLsoQQM2bMeO+992Kx2LZt22pra9PS0t544w33XUeOHCkuLh4YGDDGFBUVSSl//etf5+fn27b9+eefHzhw4OjRoxkZGaOn+JVSbthVSp05c0ZKKaXcsmXLwMDAU089dezYsX/84x8vv/zy9u3b4/H4U089FY1Gd+/efejQIfftPT09gUBgtMyVlZXd3d2nTp1SSjU1NW3btq23t/exxx4bHh7++9//3tPTc+7cuWeffTYSiTz++OPD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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">P<span class="_ _3"></span>ointers<span class="_ _1b"> </span>Aliasing<span class="_ _59"> </span>4/4</div><div class="t m0 x1 hf y113 ff5 fs5 fc6 sc0 ls0 ws0">void<span class="_"> </span><span class="ffc fc7">foo<span class="fc0">(std<span class="fc8">::</span>vector<span class="fc8">&lt;</span></span></span>double<span class="ffc fc8">&gt;&amp;<span class="_ _8"> </span><span class="fc0">v,<span class="_ _1b"> </span></span></span><span class="fc9">const<span class="_"> </span></span>double<span class="ffc fc8">&amp;<span class="_ _1b"> </span><span class="fc0">coeff)<span class="_ _1b"> </span>{</span></span></div><div class="t m0 xf hf y114 ff5 fs5 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffc fc0">(</span>auto<span class="ffc fc8">&amp;<span class="_ _8"> </span><span class="fc0">item<span class="_ _1b"> </span></span>:<span class="_ _1b"> </span><span class="fc0">v)<span class="_ _8"> </span>item<span class="_ _1b"> </span></span>*=<span class="_ _1b"> </span><span class="fc0">std</span>::<span class="fc0">sinh(coeff);</span></span></div><div class="t m0 x1 hf y115 ffc fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hb y2df ff4 fs6 fc0 sc0 ls0 ws0">vs.</div><div class="t m0 x1 hf y2e0 ff5 fs5 fc6 sc0 ls0 ws0">void<span class="_"> </span><span class="ffc fc7">foo<span class="fc0">(std<span class="fc8">::</span>vector<span class="fc8">&lt;</span></span></span>double<span class="ffc fc8">&gt;&amp;<span class="_ _8"> </span><span class="fc0">v,<span class="_ _1b"> </span></span></span>double<span class="_"> </span><span class="ffc fc0">coeff)<span class="_ _1b"> </span>{</span></div><div class="t m0 xf hf y2e1 ff5 fs5 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffc fc0">(</span>auto<span class="ffc fc8">&amp;<span class="_ _8"> </span><span class="fc0">item<span class="_ _1b"> </span></span>:<span class="_ _1b"> </span><span class="fc0">v)<span class="_ _8"> </span>item<span class="_ _1b"> </span></span>*=<span class="_ _1b"> </span><span class="fc0">std</span>::<span class="fc0">sinh(coeff);</span></span></div><div class="t m0 x1 hf y2e2 ffc fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 xb hd y2e3 ffb fs7 fcc sc0 ls0 ws0">Argument<span class="_ _9"> </span>Passing,<span class="_ _9"> </span>Core<span class="_ _21"> </span>Guidelines<span class="_ _9"> </span>and<span class="_ _21"> </span>Aliasing</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">81/93</div><a class="l" href="https://www.youtube.com/watch?v=uylFACqcWYI"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:-0.756000px;width:218.531000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf58" class="pf w0 h0" data-page-no="58"><div class="pc pc58 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x8 h2 ya1 ff1 fs0 fc0 sc0 ls0 ws0">Object-Oriented</div><div class="t m0 x8 h2 ya2 ff1 fs0 fc0 sc0 ls0 ws0">Programming</div><a class="l" href="#pf58" data-dest-detail='[88,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:149.618000px;width:241.993000px;height:24.025000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf58" data-dest-detail='[88,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:115.247000px;width:154.986000px;height:24.025000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf59" class="pf w0 h0" data-page-no="59"><div class="pc pc59 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">V<span class="_ _3"></span>a<span class="_ _3"></span>riable/Object<span class="_ _9"> </span>Scop<span class="_ _b"></span>e</div><div class="t m0 x1 hb y2e4 ff1 fs6 fc0 sc0 ls0 ws0">Decla<span class="_ _3"></span>re<span class="_ _8"> </span>lo<span class="_ _b"></span>cal<span class="_ _8"> </span>variable<span class="_ _f"> </span>in<span class="_ _f"> </span>the<span class="_ _8"> </span>innermost<span class="_ _8"> </span>scop<span class="_ _b"></span>e</div><div class="t m0 xb hb y2e5 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">the<span class="_ _c"> </span>compiler<span class="_ _f"> </span>can<span class="_ _c"> </span>more<span class="_ _c"> </span>lik<span class="_ _3"></span>ely<span class="_ _f"> </span>fit<span class="_ _c"> </span>them<span class="_ _c"> </span>into<span class="_ _f"> </span>registers<span class="_ _c"> </span>instead<span class="_ _f"> </span>of<span class="_ _c"> </span>stack</span></div><div class="t m0 xb hb y2e6 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">it<span class="_ _c"> </span>improves<span class="_ _c"> </span>readabilit<span class="_ _3"></span>y</span></div><div class="t m0 x2b h10 y2e7 ff1 fs7 fc0 sc0 ls0 ws0">W<span class="_ _3"></span>rong:</div><div class="t m0 x2b hd y2e8 ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffb fc0">i,<span class="_ _9"> </span>x;</span></div><div class="t m0 x2b hd y2e9 ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>N;<span class="_ _9"> </span>i<span class="fc8">++</span>)<span class="_ _21"> </span>{</span></div><div class="t m0 x42 hd y2ea ffb fs7 fc0 sc0 ls0 ws0">x<span class="_ _45"> </span><span class="fc8">=<span class="_ _9"> </span></span>value<span class="_ _9"> </span><span class="fc8">*<span class="_ _21"> </span>5</span>;</div><div class="t m0 x42 hd y2eb ffb fs7 fc0 sc0 ls0 ws0">sum<span class="_ _9"> </span><span class="fc8">+=<span class="_ _9"> </span></span>x;</div><div class="t m0 x2b hd y2ec ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x43 h10 y2e7 ff1 fs7 fc0 sc0 ls0 ws0">Co<span class="_ _3"></span>rrect:</div><div class="t m0 x43 hd y2e8 ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>N;<span class="_ _9"> </span>i<span class="fc8">++</span>)<span class="_ _21"> </span>{</span></span></div><div class="t m0 x44 hd y2e9 ff5 fs7 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffb fc0">x<span class="_ _20"> </span><span class="fc8">=<span class="_ _1b"> </span></span>value<span class="_ _21"> </span><span class="fc8">*<span class="_ _9"> </span>5</span>;</span></div><div class="t m0 x44 hd y2ea ffb fs7 fc0 sc0 ls0 ws0">sum<span class="_ _14"> </span><span class="fc8">+=<span class="_ _9"> </span></span>x;</div><div class="t m0 x43 hd y2eb ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xb hb y2ed ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4 fcd">C++17<span class="_ _c"> </span><span class="fc0">allows<span class="_ _c"> </span>lo<span class="_ _b"></span>cal<span class="_ _c"> </span>variable<span class="_ _c"> </span>initialization<span class="_ _c"> </span>in<span class="_ _10"> </span><span class="ff6">if<span class="_ _10"> </span></span>and<span class="_ _10"> </span><span class="ff6">switch<span class="_ _10"> </span></span>statements,<span class="_ _c"> </span>while</span></span></div><div class="t m0 x36 hb y2ee ff4 fs6 fcd sc0 ls0 ws0">C++20<span class="_ _c"> </span><span class="fc0">intro<span class="_ _b"></span>duces<span class="_ _f"> </span>them<span class="_ _c"> </span>for<span class="_ _c"> </span>in<span class="_ _c"> </span><span class="ff9">range-based<span class="_ _c"> </span>lo<span class="_ _b"></span>ops</span></span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">82/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf5a" class="pf w0 h0" data-page-no="5a"><div class="pc pc5a w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">V<span class="_ _3"></span>a<span class="_ _3"></span>riable/Object<span class="_ _9"> </span>Scop<span class="_ _b"></span>e</div><div class="t m0 x1 hb y2ef ff1 fs6 fc0 sc0 ls0 ws0">Exception!<span class="_ _21"> </span><span class="ff4">Built-in<span class="_ _c"> </span>type<span class="_ _c"> </span>variables<span class="_ _c"> </span>and<span class="_ _c"> </span>passive<span class="_ _f"> </span>structures<span class="_ _c"> </span>should<span class="_ _f"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>placed<span class="_ _f"> </span>in<span class="_ _c"> </span>the</span></div><div class="t m0 x1 hb y2f0 ff4 fs6 fc0 sc0 ls0 ws0">innermost<span class="_ _c"> </span>lo<span class="_ _b"></span>op,<span class="_ _f"> </span>while<span class="_ _c"> </span>objects<span class="_ _f"> </span>with<span class="_ _c"> </span>constructors<span class="_ _c"> </span>should<span class="_ _c"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>placed<span class="_ _f"> </span>outside<span class="_ _c"> </span>lo<span class="_ _b"></span>ops</div><div class="t m0 x9 hd y2f1 ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>N;<span class="_ _9"> </span>i<span class="fc8">++</span>)<span class="_ _21"> </span>{</span></span></div><div class="t m0 x45 hd y2f2 ffb fs7 fc0 sc0 ls0 ws0">std<span class="fc8">::</span>string<span class="_ _9"> </span>str(<span class="fca">&quot;prefix_&quot;</span>);</div><div class="t m0 x45 hd y2f3 ffb fs7 fc0 sc0 ls0 ws0">std<span class="fc8">::</span>cout<span class="_ _9"> </span><span class="fc8">&lt;&lt;<span class="_ _9"> </span></span>str<span class="_ _21"> </span><span class="fc8">+<span class="_ _9"> </span></span>value[i];</div><div class="t m0 x9 hd y2f4 ffb fs7 fc0 sc0 ls0 ws0">}<span class="_ _9"> </span><span class="ffa fc5">//<span class="_ _9"> </span>str<span class="_ _21"> </span>call<span class="_ _9"> </span>CTOR/DTOR<span class="_ _21"> </span>N<span class="_ _9"> </span>times</span></div><div class="t m0 x43 hd y2f1 ffb fs7 fc0 sc0 ls0 ws0">std<span class="fc8">::</span>string<span class="_ _9"> </span>str(<span class="fca">&quot;prefix_&quot;</span>);</div><div class="t m0 x43 hd y2f2 ff5 fs7 fc9 sc0 ls0 ws0">for<span class="_"> </span><span class="ffb fc0">(</span><span class="fc6">int<span class="_"> </span><span class="ffb fc0">i<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span>0</span>;<span class="_ _21"> </span>i<span class="_ _9"> </span><span class="fc8">&lt;<span class="_ _21"> </span></span>N;<span class="_ _9"> </span>i<span class="fc8">++</span>)<span class="_ _21"> </span>{</span></span></div><div class="t m0 x44 hd y2f3 ffb fs7 fc0 sc0 ls0 ws0">std<span class="fc8">::</span>cout<span class="_ _9"> </span><span class="fc8">&lt;&lt;<span class="_ _9"> </span></span>str<span class="_ _21"> </span><span class="fc8">+<span class="_ _9"> </span></span>value[i];</div><div class="t m0 x43 hd y2f4 ffb fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">83/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf5b" class="pf w0 h0" data-page-no="5b"><div class="pc pc5b w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Object<span class="_ _1b"> </span>Optimizations</div><div class="t m0 xb hb y8d ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _f"> </span><span class="ff1">direct<span class="_ _8"> </span>initialization<span class="_ _c"> </span></span>and<span class="_ _c"> </span><span class="ff9">full<span class="_ _f"> </span>object<span class="_ _c"> </span>constructor<span class="_ _9"> </span></span>instead<span class="_ _f"> </span>of<span class="_ _c"> </span>tw<span class="_ _3"></span>o-step</span></div><div class="t m0 x36 hb y2f5 ff4 fs6 fc0 sc0 ls0 ws0">initialization<span class="_ _c"> </span>(also<span class="_ _c"> </span>for<span class="_ _c"> </span>variables)</div><div class="t m0 xb hb y2f6 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _f"> </span><span class="ff1">move<span class="_ _8"> </span>semantic<span class="_ _c"> </span></span>instead<span class="_ _c"> </span>of<span class="_ _f"> </span><span class="ff9">copy<span class="_ _c"> </span>constructo<span class="_ _3"></span>r<span class="ff4">.<span class="_ _21"> </span>Mark<span class="_ _c"> </span></span>cop<span class="_ _3"></span>y<span class="_ _c"> </span>constructor<span class="_ _9"> </span><span class="ff4">as</span></span></span></div><div class="t m0 xc hb y2f7 ff6 fs6 fc0 sc0 ls0 ws0">=delete<span class="_ _10"> </span><span class="ff4">(sometimes<span class="_ _c"> </span>it<span class="_ _c"> </span>is<span class="_ _f"> </span>hard<span class="_ _c"> </span>to<span class="_ _c"> </span>see,<span class="_ _c"> </span>e.g.<span class="_ _21"> </span>implicit)</span></div><div class="t m0 xb hb y2f8 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Use<span class="_ _10"> </span><span class="ff5">static<span class="_ _10"> </span></span>fo<span class="_ _3"></span>r<span class="_ _f"> </span>all<span class="_ _c"> </span>memb<span class="_ _b"></span>ers<span class="_ _f"> </span>that<span class="_ _c"> </span>do<span class="_ _f"> </span>not<span class="_ _c"> </span>use<span class="_ _f"> </span>instance<span class="_ _c"> </span>memb<span class="_ _b"></span>er<span class="_ _f"> </span>(avoid<span class="_ _c"> </span>passing</span></div><div class="t m0 xc hb y2f9 ff6 fs6 fc0 sc0 ls0 ws0">this<span class="_ _10"> </span><span class="ff4">p<span class="_ _b"></span>ointer)</span></div><div class="t m0 xb hb y2fa ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">If<span class="_ _c"> </span>the<span class="_ _f"> </span>object<span class="_ _c"> </span>semantic<span class="_ _f"> </span>is<span class="_ _c"> </span><span class="ff9">trivially<span class="_ _f"> </span>cop<span class="_ _3"></span>yable<span class="ff4">,<span class="_ _c"> </span>ensure<span class="_ _c"> </span><span class="ff1">defaulted<span class="_ _10"> </span><span class="ff6">=<span class="_"> </span>default</span></span></span></span></span></div><div class="t m0 x36 hb y2fb ff9 fs6 fc0 sc0 ls0 ws0">default/cop<span class="_ _3"></span>y<span class="_ _f"> </span>constructo<span class="_ _3"></span>rs<span class="_ _9"> </span><span class="ff4">and<span class="_ _c"> </span></span>assignment<span class="_ _f"> </span>op<span class="_ _b"></span>erators<span class="_ _1b"> </span><span class="ff4">to<span class="_ _c"> </span>enable<span class="_ _f"> </span>vecto<span class="_ _3"></span>rization</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">84/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf5c" class="pf w0 h0" data-page-no="5c"><div class="pc pc5c w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIsElEQVR42u3ZsU3EUBBF0f3IIyKLGhARFSBEjLQtEFAPTdABATUgEVAEHRCtfsDuJCYjIASkHdvnVGA/J1fjdnF1swEAgDLe315PrAAAQDUiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQCAby0zrQAAQB0R4ZIKAEA5IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJFqAgAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACs1GCChem9L+l1xnG02xr2B4AfXFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAwHG1zLQCAAB1RIRLKgAA5YhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgDAMQ0mAErpvRth1sZxNALwdy6pAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAwL9qmWkFAADqiAiXVAAAyhGpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAAAsxjCXB/3c77d39z4YzMvL85MRAPiFlplWAACgjojwux8AgHJEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQCA+Rp2D+dWAACo7+P2cSVvenm9be3sdNodNptpmnx6AABK+AKIgyv+0OLlOwAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Object<span class="_ _1b"> </span>Dynamic<span class="_ _1b"> </span>Behavior<span class="_ _8"> </span>Optimizations</div><div class="t m0 xb hb y49 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff1">Virtual<span class="_ _8"> </span>calls<span class="_ _c"> </span><span class="ff4">are<span class="_ _c"> </span>slo<span class="_ _3"></span>wer<span class="_ _c"> </span>than<span class="_ _c"> </span>standard<span class="_ _c"> </span>functions</span></span></div><div class="t m0 x15 hb y21d ff4 fs6 fc0 sc0 ls0 ws0">-<span class="_"> </span>Virtual<span class="_ _c"> </span>calls<span class="_ _c"> </span>prevent<span class="_ _c"> </span>any<span class="_ _c"> </span>kind<span class="_ _f"> </span>of<span class="_ _c"> </span>optimizations<span class="_ _f"> </span>as<span class="_ _c"> </span>function<span class="_ _f"> </span>lo<span class="_ _b"></span>okup<span class="_ _c"> </span>is<span class="_ _f"> </span>at</div><div class="t m0 x1b hb y21e ff4 fs6 fc0 sc0 ls0 ws0">runtime<span class="_ _c"> </span>(lo<span class="_ _b"></span>op<span class="_ _f"> </span>transfo<span class="_ _3"></span>rmation,<span class="_ _f"> </span>vectorization,<span class="_ _c"> </span>etc.)</div><div class="t m0 x15 hb y2fc ff4 fs6 fc0 sc0 ls0 ws0">-<span class="_"> </span>Virtual<span class="_ _c"> </span>call<span class="_ _c"> </span>overhead<span class="_ _f"> </span>is<span class="_ _c"> </span>up<span class="_ _f"> </span>to<span class="_ _c"> </span>20%-50%<span class="_ _f"> </span>for<span class="_ _c"> </span>function<span class="_ _c"> </span>that<span class="_ _c"> </span>can<span class="_ _f"> </span>b<span class="_ _b"></span>e<span class="_ _c"> </span>inlined</div><div class="t m0 xb hb y2fd ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Ma<span class="_ _3"></span>rk<span class="_ _10"> </span><span class="ff6">final<span class="_ _10"> </span></span>all<span class="_ _10"> </span><span class="ff6">virtual<span class="_ _10"> </span></span>functions<span class="_ _c"> </span>that<span class="_ _f"> </span>are<span class="_ _c"> </span>not<span class="_ _c"> </span>overridden</span></div><div class="t m0 xb hb y2fe ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">A<span class="_ _3"></span>void<span class="_ _f"> </span>dynamic<span class="_ _c"> </span>op<span class="_ _b"></span>erations,<span class="_ _f"> </span>e.g.<span class="_ _4"> </span><span class="ff6">dynamic_cast</span></span></div><div class="t m0 x10 h10 y2ff ffe fs7 fcc sc0 ls0 ws0">-<span class="_ _6"> </span><span class="ffb">The<span class="_ _9"> </span>Hidden<span class="_ _21"> </span>Performance<span class="_ _9"> </span>Price<span class="_ _9"> </span>of<span class="_ _21"> </span>Virtual<span class="_ _9"> </span>Functions</span></div><div class="t m0 x10 h10 y300 ffe fs7 fcc sc0 ls0 ws0">-<span class="_ _6"> </span><span class="ffb">Investigating<span class="_ _9"> </span>the<span class="_ _21"> </span>Performance<span class="_ _9"> </span>Overhead<span class="_ _9"> </span>of<span class="_ _21"> </span>C++<span class="_ _9"> </span>Exceptions</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">85/93</div><a class="l" href="https://raw.githubusercontent.com/CppCon/CppCon2022/main/Presentations/CppCon-The-Hidden-Performance-Price-of-Virtual-Functions.pdf"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:19.893000px;width:232.653000px;height:7.373000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://pspdfkit.com/blog/2020/performance-overhead-of-exceptions-in-cpp/"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:3.306000px;width:265.604000px;height:9.365000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf5d" class="pf w0 h0" data-page-no="5d"><div class="pc pc5d w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Object<span class="_ _1b"> </span>Op<span class="_ _b"></span>eration<span class="_ _1b"> </span>Optimizations</div><div class="t m0 xb hb y301 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Minimize<span class="_ _c"> </span>multiple<span class="_ _10"> </span><span class="ff5">+<span class="_ _10"> </span></span>op<span class="_ _b"></span>erations<span class="_ _c"> </span>b<span class="_ _0"></span>et<span class="_ _3"></span>w<span class="_ _3"></span>een<span class="_ _c"> </span>objects<span class="_ _f"> </span>to<span class="_ _c"> </span>avoid<span class="_ _f"> </span>temp<span class="_ _b"></span>ora<span class="_ _3"></span>ry<span class="_ _c"> </span>storage</span></div><div class="t m0 xb hb y302 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _10"> </span><span class="ff5">x<span class="_"> </span>+=<span class="_"> </span>obj<span class="_ _26"> </span></span>,<span class="_ _f"> </span>instead<span class="_ _c"> </span>of<span class="_ _10"> </span><span class="ff6">x<span class="_"> </span>=<span class="_"> </span>x<span class="_"> </span>+<span class="_"> </span>obj<span class="_ _10"> </span><span class="fff">→<span class="_ _f"> </span></span></span>avoid<span class="_ _c"> </span>object<span class="_ _c"> </span>copy<span class="_ _c"> </span>and<span class="_ _c"> </span>temp<span class="_ _b"></span>ora<span class="_ _3"></span>ry</span></div><div class="t m0 x36 hb y303 ff4 fs6 fc0 sc0 ls0 ws0">sto<span class="_ _3"></span>rage</div><div class="t m0 xb hb y304 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _10"> </span><span class="ff5">++obj<span class="_ _26"> </span></span>/<span class="_ _d"> </span><span class="ff5">obj<span class="_ _10"> </span></span>(return<span class="_ _10"> </span><span class="ff6">&amp;obj<span class="_ _26"> </span></span>),<span class="_ _f"> </span>instead<span class="_ _c"> </span>of<span class="_ _10"> </span><span class="ff6">obj++<span class="_ _d"> </span></span>,<span class="_ _d"> </span><span class="ff6">obj<span class="_ _10"> </span></span>(cop<span class="_ _3"></span>y<span class="_ _c"> </span>and<span class="_ _f"> </span>return</span></div><div class="t m0 x36 hb y305 ff4 fs6 fc0 sc0 ls0 ws0">old<span class="_ _10"> </span><span class="ff6">obj<span class="_ _26"> </span></span>)</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">86/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf5e" class="pf w0 h0" data-page-no="5e"><div class="pc pc5e w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIeElEQVR42u3YsQkCMRiG4UQuWB3OIFZOIGIt3GYu4TgWDuEGVsdVpomdpaDVf8fzTPDzpXlJ3h1OCQAAwnjcbysrAAAQjUgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAOAj11qtAABAHKUUP6kAAIQjUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAOBH3YxunabJgwEA/Kfv+xld6ycVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRagIAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACLVBAAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQDgq1xrtQIAAHGUUvykAgAQjkgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAgIXpxsvWCgAAy/Y8X2d07f445LxZt/GVUmvN8wEAEMIbGQwaAnYizggAAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Object<span class="_ _1b"> </span>Implicit<span class="_ _1b"> </span>Conversion</div><div class="t m0 x1 hf y113 ff5 fs5 fc9 sc0 ls0 ws0">struct<span class="_"> </span><span class="fc7">A<span class="_"> </span><span class="ffc fc0">{<span class="_ _1c"> </span><span class="ffa fc5">//<span class="_ _8"> </span>big<span class="_ _1b"> </span>object</span></span></span></div><div class="t m0 xf hf y114 ff5 fs5 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffc fc0">array[<span class="fc8">10000</span>];</span></div><div class="t m0 x1 hf y115 ffc fs5 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 hf y116 ff5 fs5 fc9 sc0 ls0 ws0">struct<span class="_"> </span><span class="fc7">B<span class="_"> </span><span class="ffc fc0">{</span></span></div><div class="t m0 xf hf y117 ff5 fs5 fc6 sc0 ls0 ws0">int<span class="_"> </span><span class="ffc fc0">array[<span class="fc8">10000</span>];</span></div><div class="t m0 xf hf y119 ffc fs5 fc0 sc0 ls0 ws0">B()<span class="_ _8"> </span><span class="fc8">=<span class="_ _1b"> </span><span class="ff5 fc9">default</span></span>;</div><div class="t m0 xf hf y11a ffc fs5 fc0 sc0 ls0 ws0">B(<span class="ff5 fc9">const<span class="_"> </span></span>A<span class="fc8">&amp;<span class="_ _8"> </span></span>a)<span class="_ _1b"> </span>{<span class="_ _1b"> </span><span class="ffa fc5">//<span class="_ _8"> </span>user-defined<span class="_ _1b"> </span>constructor</span></div><div class="t m0 x15 hf y11b ffc fs5 fc0 sc0 ls0 ws0">std<span class="fc8">::</span>copy(a.array,<span class="_ _8"> </span>a.array<span class="_ _1b"> </span><span class="fc8">+<span class="_ _1b"> </span>10000</span>,<span class="_ _8"> </span>array);</div><div class="t m0 xf hf y11c ffc fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hf y306 ffc fs5 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 hf y11d ffa fs5 fc5 sc0 ls0 ws0">//----------------------------------------------------------------------</div><div class="t m0 x1 hf y11e ff5 fs5 fc6 sc0 ls0 ws0">void<span class="_"> </span><span class="ffc fc7">f<span class="fc0">(</span></span><span class="fc9">const<span class="_"> </span><span class="ffc fc0">B<span class="fc8">&amp;<span class="_ _1b"> </span></span>b)<span class="_ _8"> </span>{}</span></span></div><div class="t m0 x1 hf y120 ffc fs5 fc0 sc0 ls0 ws0">A<span class="_ _8"> </span>a;</div><div class="t m0 x1 hf y307 ffc fs5 fc0 sc0 ls0 ws0">B<span class="_ _8"> </span>b;</div><div class="t m0 x1 hf y121 ffc fs5 fc0 sc0 ls0 ws0">f(b);<span class="_ _8"> </span><span class="ffa fc5">//<span class="_ _1b"> </span>no<span class="_ _8"> </span>cost</span></div><div class="t m0 x1 hf y122 ffc fs5 fc0 sc0 ls0 ws0">f(a);<span class="_ _8"> </span><span class="ffa fc5">//<span class="_ _1b"> </span><span class="fc3">very<span class="_ _8"> </span>costly!!<span class="_ _1b"> </span></span>implicit<span class="_ _8"> </span>conversion</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">87/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf5f" class="pf w0 h0" data-page-no="5f"><div class="pc pc5f w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x8 h2 y308 ff5 fs0 fc0 sc0 ls0 ws0">Std<span class="_ _1"> </span><span class="ff1">Lib<span class="_ _7"></span>ra<span class="_ _3"></span>ry<span class="_ _1"> </span>and</span></div><div class="t m0 x8 h2 y135 ff1 fs0 fc0 sc0 ls0 ws0">Other<span class="_ _1"> </span>Language</div><div class="t m0 x8 h2 y309 ff1 fs0 fc0 sc0 ls0 ws0">Asp<span class="_ _0"></span>ects</div><a class="l" href="#pf5f" data-dest-detail='[95,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:166.803000px;width:241.993000px;height:24.026000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf5f" data-dest-detail='[95,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:132.432000px;width:241.993000px;height:24.026000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf5f" data-dest-detail='[95,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:98.061000px;width:90.543000px;height:24.026000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf60" class="pf w0 h0" data-page-no="60"><div class="pc pc60 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">F<span class="_ _3"></span>rom<span class="_ _1b"> </span>C<span class="_ _1b"> </span>to<span class="_ _9"> </span>C++</div><div class="t m0 xb hb y30a ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">A<span class="_ _3"></span>void<span class="_ _f"> </span>old<span class="_ _c"> </span><span class="ff6">C<span class="_ _f"> </span></span>libra<span class="_ _3"></span>ry<span class="_ _c"> </span>routines<span class="_ _c"> </span>such<span class="_ _f"> </span>as<span class="_ _10"> </span><span class="ff6">qsort<span class="_ _26"> </span></span>,<span class="_ _10"> </span><span class="ff6">bsearch<span class="_ _d"> </span></span>,<span class="_ _c"> </span>etc.<span class="_ _21"> </span>Prefer<span class="_ _10"> </span><span class="ff5">std::sort<span class="_ _d"> </span></span>,</span></div><div class="t m0 xc hb y30b ff5 fs6 fc0 sc0 ls0 ws0">std::binary_search<span class="_ _10"> </span><span class="ff4">instead</span></div><div class="t m0 x15 hb y30c ff4 fs6 fc0 sc0 ls0 ws0">-<span class="_ _15"> </span><span class="ff6">std::sort<span class="_ _10"> </span></span>is<span class="_ _c"> </span>based<span class="_ _c"> </span>on<span class="_ _f"> </span>a<span class="_ _c"> </span>hybrid<span class="_ _c"> </span>so<span class="_ _3"></span>rting<span class="_ _f"> </span>algorithm.<span class="_ _9"> </span>Quick-so<span class="_ _3"></span>rt<span class="_ _f"> </span>/<span class="_ _c"> </span>head-sort</div><div class="t m0 x1b hb y30d ff4 fs6 fc0 sc0 ls0 ws0">(introso<span class="_ _3"></span>rt),<span class="_ _c"> </span>merge-sort<span class="_ _d"> </span>/<span class="_ _c"> </span>insertion,<span class="_ _c"> </span>etc.<span class="_ _9"> </span>dep<span class="_ _b"></span>ending<span class="_ _c"> </span>on<span class="_ _c"> </span>the<span class="_ _d"> </span><span class="ff6">std<span class="_ _c"> </span></span>implementation</div><div class="t m0 x15 hb y30e ff4 fs6 fc0 sc0 ls0 ws0">-<span class="_"> </span>Prefer<span class="_ _10"> </span><span class="ff6">std::find()<span class="_ _10"> </span></span>fo<span class="_ _3"></span>r<span class="_ _c"> </span>small<span class="_ _f"> </span>arra<span class="_ _3"></span>y<span class="_ _7"></span>,<span class="_ _10"> </span><span class="ff6 fs4">std::lower_bound<span class="_ _26"> </span><span class="ff4">,</span></span></div><div class="t m0 x19 hb y30f ff6 fs4 fc0 sc0 ls0 ws0">std::upper_bound<span class="_ _26"> </span><span class="ff4">,<span class="_ _10"> </span></span>std::binary_search<span class="_ _12"> </span><span class="ff4 fs6">for<span class="_ _c"> </span>large<span class="_ _c"> </span>so<span class="_ _3"></span>rted<span class="_ _c"> </span>arra<span class="_ _3"></span>y</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">88/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf61" class="pf w0 h0" data-page-no="61"><div class="pc pc61 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">F<span class="_ _3"></span>unction<span class="_ _1b"> </span>Optimizations</div><div class="t m0 xb hb y1f7 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _15"> </span><span class="ff5">std::fill<span class="_ _10"> </span><span class="ff4">applies<span class="_ _10"> </span><span class="ff6">memset<span class="_ _10"> </span></span>and<span class="_ _10"> </span></span>std::copy<span class="_ _12"> </span><span class="ff4">applies<span class="_ _10"> </span><span class="ff6">memcpy<span class="_ _10"> </span></span>if<span class="_ _f"> </span>the</span></span></div><div class="t m0 x36 hb y310 ff4 fs6 fc0 sc0 ls0 ws0">input/output<span class="_ _c"> </span>are<span class="_ _c"> </span>continuous<span class="_ _c"> </span>in<span class="_ _c"> </span>memory</div><div class="t m0 xb hb y311 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Use<span class="_ _c"> </span>the<span class="_ _f"> </span>same<span class="_ _c"> </span>type<span class="_ _f"> </span>fo<span class="_ _3"></span>r<span class="_ _f"> </span>initialization<span class="_ _c"> </span>in<span class="_ _f"> </span>functions<span class="_ _c"> </span>like<span class="_ _12"> </span><span class="ff6">std::accumulate()<span class="_ _d"> </span></span>,</span></div><div class="t m0 xc h11 y312 ff6 fs6 fc0 sc0 ls0 ws0">std::fill</div><div class="t m0 x36 hd y313 ff5 fs7 fc9 sc0 ls0 ws0">auto<span class="_"> </span><span class="ffb fc0">array<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span></span>new<span class="_"> </span><span class="fc6">int<span class="ffb fc0">[size];</span></span></div><div class="t m0 x36 hd y314 ffb fs7 fc0 sc0 ls0 ws0">...</div><div class="t m0 x36 hd y315 ff5 fs7 fc9 sc0 ls0 ws0">auto<span class="_"> </span><span class="ffb fc0">sum<span class="_ _9"> </span><span class="fc8">=<span class="_ _9"> </span></span>std<span class="fc8">::</span>accumulate(array,<span class="_ _21"> </span>array<span class="_ _9"> </span><span class="fc8">+<span class="_ _21"> </span></span>size,<span class="_ _9"> </span><span class="fc8">0u</span>);</span></div><div class="t m0 x36 hd y316 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>0u<span class="_ _9"> </span>!=<span class="_ _21"> </span>0<span class="_ _9"> </span><span class="ff17">→<span class="_ _21"> </span></span>conversion<span class="_ _9"> </span>at<span class="_ _21"> </span>each<span class="_ _9"> </span>step</div><div class="t m0 x36 hd y317 ffb fs7 fc0 sc0 ls0 ws0">std<span class="fc8">::</span>fill(array,<span class="_ _9"> </span>array<span class="_ _9"> </span><span class="fc8">+<span class="_ _21"> </span></span>size,<span class="_ _9"> </span><span class="fc8">0u</span>);</div><div class="t m0 x36 hd y318 ffa fs7 fc5 sc0 ls0 ws0">//<span class="_ _9"> </span>it<span class="_ _9"> </span>is<span class="_ _21"> </span>not<span class="_ _9"> </span>translated<span class="_ _21"> </span>into<span class="_ _9"> </span><span class="ff15">memset</span></div><div class="t m0 xb hd y319 ffb fs7 fcc sc0 ls0 ws0">The<span class="_ _9"> </span>Hunt<span class="_ _9"> </span>for<span class="_ _21"> </span>the<span class="_ _9"> </span>Fastest<span class="_ _21"> </span>Zero</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">89/93</div><a class="l" href="https://travisdowns.github.io/blog/2020/01/20/zero.html"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:0.655000px;width:138.506000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf62" class="pf w0 h0" data-page-no="62"><div class="pc pc62 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Containers</div><div class="t m0 xb hb y136 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Use<span class="_ _10"> </span><span class="ff5">std<span class="_ _10"> </span></span>container<span class="_ _c"> </span>memb<span class="_ _b"></span>er<span class="_ _c"> </span>functions<span class="_ _f"> </span>(e.g.<span class="_ _4"> </span><span class="ff6">obj.find()<span class="_ _d"> </span></span>)<span class="_ _c"> </span>instead<span class="_ _c"> </span>of<span class="_ _f"> </span>external</span></div><div class="t m0 x36 hb y31a ff4 fs6 fc0 sc0 ls0 ws0">ones<span class="_ _c"> </span>(e.g.<span class="_ _4"> </span><span class="ff6">std::find()<span class="_ _d"> </span></span>).<span class="_ _21"> </span><span class="fs4">Example:<span class="_ _2f"> </span><span class="ff6">std::set<span class="_ _12"> </span><span class="ff9">O<span class="_ _0"></span><span class="ff1c">(</span>log<span class="_ _0"></span><span class="ff1c">(</span>n<span class="ff1c">))<span class="_ _c"> </span></span></span></span>vs.<span class="_ _1b"> </span><span class="ff9">O<span class="_ _0"></span><span class="ff1c">(</span>n<span class="ff1c">)</span></span></span></div><div class="t m0 xb hb y31b ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Be<span class="_ _c"> </span>aw<span class="_ _3"></span>a<span class="_ _3"></span>re<span class="_ _f"> </span>of<span class="_ _c"> </span>container<span class="_ _f"> </span>p<span class="_ _3"></span>rop<span class="_ _0"></span>erties,<span class="_ _c"> </span>e.g.<span class="_ _4"> </span><span class="ff6 fs4">vector.push_back(v)<span class="_ _26"> </span></span>,<span class="_ _c"> </span>instead<span class="_ _f"> </span>of</span></div><div class="t m0 xc hb y31c ff6 fs4 fc0 sc0 ls0 ws0">vector.insert(vector.begin(),<span class="_"> </span>value)<span class="_ _10"> </span><span class="fff fs6">→<span class="_ _c"> </span><span class="ff4">entire<span class="_ _c"> </span>copy<span class="_ _c"> </span>of<span class="_ _c"> </span>all<span class="_ _f"> </span>vecto<span class="_ _3"></span>r<span class="_ _f"> </span>elements</span></span></div><div class="t m0 xb hb y31d ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Set<span class="_ _10"> </span><span class="ff5">std::vector<span class="_ _10"> </span></span>size<span class="_ _c"> </span>during<span class="_ _c"> </span>the<span class="_ _f"> </span>object<span class="_ _c"> </span>construction<span class="_ _f"> </span>(or<span class="_ _c"> </span>use<span class="_ _c"> </span>the<span class="_ _10"> </span><span class="ff6">reserve()</span></span></div><div class="t m0 x36 hb y31e ff4 fs6 fc0 sc0 ls0 ws0">metho<span class="_ _b"></span>d)<span class="_ _c"> </span>if<span class="_ _c"> </span>the<span class="_ _c"> </span>numb<span class="_ _0"></span>er<span class="_ _d"> </span>of<span class="_ _f"> </span>elements<span class="_ _c"> </span>to<span class="_ _c"> </span>insert<span class="_ _c"> </span>is<span class="_ _f"> </span>known<span class="_ _d"> </span>in<span class="_ _f"> </span>advance<span class="_ _c"> </span><span class="fff">→<span class="_ _c"> </span></span>every<span class="_ _c"> </span>implicit</div><div class="t m0 x36 hb y31f ff4 fs6 fc0 sc0 ls0 ws0">resize<span class="_ _c"> </span>is<span class="_ _c"> </span>equivalent<span class="_ _f"> </span>to<span class="_ _c"> </span>a<span class="_ _f"> </span>copy<span class="_ _c"> </span>of<span class="_ _c"> </span>all<span class="_ _c"> </span>vector<span class="_ _c"> </span>elements</div><div class="t m0 xb hb y320 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Consider<span class="_ _c"> </span><span class="ff9">unordered<span class="_ _1b"> </span></span>containers<span class="_ _f"> </span>instead<span class="_ _c"> </span>of<span class="_ _f"> </span>the<span class="_ _c"> </span>standard<span class="_ _c"> </span>one,<span class="_ _c"> </span>e.g.<span class="_ _4"> </span><span class="ff6">unordered_map</span></span></div><div class="t m0 x36 hb y321 ff4 fs6 fc0 sc0 ls0 ws0">vs.<span class="_ _4"> </span><span class="ff6">map</span></div><div class="t m0 xb hb y322 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _10"> </span><span class="ff5">std::array<span class="_ _10"> </span></span>instead<span class="_ _c"> </span>of<span class="_ _c"> </span>dynamic<span class="_ _f"> </span>heap<span class="_ _c"> </span>allo<span class="_ _b"></span>cation</span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">90/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf63" class="pf w0 h0" data-page-no="63"><div class="pc pc63 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIf0lEQVR42u3ZsQkCMQCG0UQuWDqDWDmBiLVwK1g4j0u4gYUzCBYO4QZWV3mmiZ0DnBY5ea8/CP81H0lcrDYBAACqcb9dJ1YAAKA2IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAgI+Yc7YCAAD1SCm5SQUAoDoiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkWoCAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAi1QQAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQDgK81YDvrs+3a398NgXC7nkxEAGCDmnK0AAEA9Ukqe+wEAqI5IBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAD/rekOcysAAPBzj+1x2IfLdRvjbFq6VwilFEsCAFCFNwxQHQIAiybwAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Critics<span class="_ _1b"> </span>to<span class="_ _1b"> </span>Standard<span class="_ _8"> </span>T<span class="_ _7"></span>emplate<span class="_ _1b"> </span>Lib<span class="_ _3"></span>rary<span class="_ _8"> </span>(STL)</div><div class="t m0 xb hb y1f7 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Platfo<span class="_ _3"></span>rm/Compiler-dep<span class="_ _b"></span>endent<span class="_ _f"> </span>implementation</span></div><div class="t m0 xb hb y21d ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Execution<span class="_ _c"> </span>order<span class="_ _c"> </span>and<span class="_ _c"> </span>results<span class="_ _c"> </span>across<span class="_ _f"> </span>platforms</span></div><div class="t m0 xb hb y323 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Debugging<span class="_ _c"> </span>is<span class="_ _f"> </span>ha<span class="_ _3"></span>rd</span></div><div class="t m0 xb hb y324 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Complex<span class="_ _c"> </span>interaction<span class="_ _f"> </span>with<span class="_ _c"> </span>custom<span class="_ _f"> </span>memo<span class="_ _3"></span>ry<span class="_ _f"> </span>allo<span class="_ _b"></span>cators</span></div><div class="t m0 xb hb y325 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Erro<span class="_ _3"></span>r<span class="_ _f"> </span>handling<span class="_ _c"> </span>based<span class="_ _f"> </span>on<span class="_ _c"> </span>exceptions<span class="_ _f"> </span>is<span class="_ _c"> </span>non-transparent</span></div><div class="t m0 xb hb y326 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Bina<span class="_ _3"></span>ry<span class="_ _f"> </span>bloat</span></div><div class="t m0 xb hb y327 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Compile<span class="_ _c"> </span>time<span class="_ _f"> </span>(see<span class="_ _c"> </span><span class="ff6">C++<span class="_"> </span>Compile<span class="_"> </span>Health<span class="_"> </span>Watchdog</span>,<span class="_ _f"> </span>and<span class="_ _c"> </span><span class="ff6">STL<span class="_"> </span>Explorer</span>)</span></div><div class="t m0 xb hd y328 ffb fs7 fcc sc0 ls0 ws0">STL<span class="_ _9"> </span>isnt<span class="_ _9"> </span>for<span class="_ _21"> </span>*anyone*</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">91/93</div><a class="l" href="https://artificial-mind.net/projects/compile-health/"><div class="d m1" style="border-style:none;position:absolute;left:135.048000px;bottom:39.725000px;width:156.628000px;height:12.754000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://s9w.github.io/stl_explorer/explorer.html"><div class="d m1" style="border-style:none;position:absolute;left:316.502000px;bottom:39.725000px;width:70.720000px;height:12.754000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://twitter.com/m_ninepoints/status/1497768472184430600"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:1.872000px;width:105.554000px;height:13.444000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf64" class="pf w0 h0" data-page-no="64"><div class="pc pc64 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Exceptions</div><div class="t m0 x1 hb y6d ff4 fs6 fc0 sc0 ls0 ws0">Exceptions<span class="_ _c"> </span>affect<span class="_ _c"> </span>b<span class="_ _0"></span>oth<span class="_ _c"> </span>performance<span class="_ _c"> </span>and<span class="_ _c"> </span>memory<span class="_ _c"> </span>resources:</div><div class="t m0 xb hb yb8 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Exceptions<span class="_ _c"> </span>make<span class="_ _c"> </span>functions<span class="_ _c"> </span>harder<span class="_ _c"> </span>to<span class="_ _c"> </span>inline,<span class="_ _c"> </span>due<span class="_ _f"> </span>to<span class="_ _c"> </span>their<span class="_ _f"> </span>side<span class="_ _c"> </span>effect.</span></div><div class="t m0 xb hb y329 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Side<span class="_ _c"> </span>effects<span class="_ _f"> </span>also<span class="_ _c"> </span>prevent<span class="_ _c"> </span>o<span class="_ _3"></span>r<span class="_ _f"> </span>limit<span class="_ _c"> </span>common<span class="_ _c"> </span>optimizations,<span class="_ _f"> </span>such<span class="_ _c"> </span>as<span class="_ _f"> </span>instruction</span></div><div class="t m0 x36 hb y32a ff4 fs6 fc0 sc0 ls0 ws0">reo<span class="_ _3"></span>rdering<span class="_ _f"> </span>and<span class="_ _c"> </span>lo<span class="_ _b"></span>op<span class="_ _f"> </span>unrolling.</div><div class="t m0 xb hb y32b ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Exceptions<span class="_ _c"> </span>produce<span class="_ _f"> </span>co<span class="_ _b"></span>de<span class="_ _c"> </span>bloat<span class="_ _f"> </span>affecting<span class="_ _c"> </span>co<span class="_ _b"></span>de<span class="_ _f"> </span>lo<span class="_ _b"></span>cality<span class="_ _c"> </span>and<span class="_ _c"> </span>decreasing<span class="_ _c"> </span>cache<span class="_ _f"> </span>hits.</span></div><div class="t m0 x1 hb y32c ff4 fs6 fc0 sc0 ls0 ws0">Mitigation:</div><div class="t m0 xb hb y32d ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Use<span class="_ _10"> </span><span class="ff5">noexcept<span class="_ _10"> </span></span>deco<span class="_ _3"></span>rator,<span class="_ _c"> </span>esp<span class="_ _b"></span>ecially<span class="_ _c"> </span>for<span class="_ _c"> </span>move<span class="_ _c"> </span>constructo<span class="_ _3"></span>r<span class="_ _f"> </span>and<span class="_ _c"> </span>assignment<span class="_ _f"> </span><span class="fff">→</span></span></div><div class="t m0 x36 hb y32e ff4 fs6 fc0 sc0 ls0 ws0">p<span class="_ _3"></span>rogram<span class="_ _f"> </span>is<span class="_ _c"> </span>ab<span class="_ _b"></span>orted<span class="_ _c"> </span>if<span class="_ _c"> </span>an<span class="_ _f"> </span>erro<span class="_ _3"></span>r<span class="_ _f"> </span>o<span class="_ _b"></span>ccurs.</div><div class="t m0 xb hb y32f ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Some<span class="_ _c"> </span>b<span class="_ _b"></span>enchmarks<span class="_ _c"> </span>rep<span class="_ _b"></span>o<span class="_ _3"></span>rt<span class="_ _f"> </span>5-7%<span class="_ _c"> </span>p<span class="_ _b"></span>erformance<span class="_ _c"> </span>imp<span class="_ _3"></span>rovement<span class="_ _10"> </span><span class="ff6">noexcept<span class="_ _1"> </span>Can</span></span></div><div class="t m0 x36 h11 y330 ff6 fs6 fc0 sc0 ls0 ws0">(Sometimes)<span class="_"> </span>Help<span class="_"> </span>(or<span class="_"> </span>Hurt)<span class="_"> </span>Performance<span class="_ _d"> </span><span class="ff10 fs8"></span></div><div class="t m0 xb hb y331 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff6">Bitcoin:<span class="_ _63"> </span>9%<span class="_"> </span>less<span class="_"> </span>memory:<span class="_ _63"> </span>make<span class="_ _15"> </span>SaltedOutpointHasher<span class="_ _24"> </span>noexcept<span class="_ _2d"> </span><span class="ff10 fs8"></span></span></div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">92/93</div><a class="l" href="https://16bpp.net/blog/post/noexcept-can-sometimes-help-or-hurt-performance/"><div class="d m1" style="border-style:none;position:absolute;left:315.471000px;bottom:40.322000px;width:110.722000px;height:16.531000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://16bpp.net/blog/post/noexcept-can-sometimes-help-or-hurt-performance/"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:27.729000px;width:228.637000px;height:11.993000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://github.com/bitcoin/bitcoin/pull/16957"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:3.181000px;width:372.319000px;height:16.930000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf65" class="pf w0 h0" data-page-no="65"><div class="pc pc65 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Other<span class="_ _1b"> </span>Language<span class="_ _1b"> </span>Asp<span class="_ _b"></span>ects</div><div class="t m0 xb hb y332 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">Prefer<span class="_ _10"> </span><span class="ff5">lambda<span class="_ _10"> </span></span>exp<span class="_ _3"></span>ression<span class="_ _f"> </span>(o<span class="_ _3"></span>r<span class="_ _10"> </span><span class="ff6">function<span class="_"> </span>object<span class="_ _d"> </span></span>)<span class="_ _c"> </span>instead<span class="_ _f"> </span>of<span class="_ _10"> </span><span class="ff6">std::function</span></span></div><div class="t m0 x36 hb y333 ff4 fs6 fc0 sc0 ls0 ws0">o<span class="_ _3"></span>r<span class="_ _f"> </span>function<span class="_ _c"> </span>p<span class="_ _b"></span>ointers</div><div class="t m0 xb hb y334 ff8 fs6 fc0 sc0 ls0 ws0">•<span class="_ _6"> </span><span class="ff4">A<span class="_ _3"></span>void<span class="_ _f"> </span>dynamic<span class="_ _c"> </span>op<span class="_ _b"></span>erations:<span class="_ _21"> </span><span class="ff1">exceptions<span class="_ _f"> </span></span>(and<span class="_ _c"> </span>use<span class="_ _10"> </span><span class="ff6">noexcept<span class="_ _d"> </span></span>),<span class="_ _c"> </span><span class="ff1">smart<span class="_ _f"> </span>p<span class="_ _b"></span>ointer</span></span></div><div class="t m0 x36 hb y335 ff4 fs6 fc0 sc0 ls0 ws0">(e.g.<span class="_ _4"> </span><span class="ff6">std::unique_ptr<span class="_ _26"> </span></span>)</div><div class="t m0 x13 ha y13 ff7 fs5 fc0 sc0 ls0 ws0">93/93</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
</div>
<div class="loading-indicator">
<img alt="" src="data:image/png;base64,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"/>
</div>
</body>
</html>