Path: ...!weretis.net!feeder8.news.weretis.net!fu-berlin.de!uni-berlin.de!not-for-mail From: ram@zedat.fu-berlin.de (Stefan Ram) Newsgroups: comp.misc Subject: Re: strlcpy and how CPUs can defy common sense Date: 26 Jul 2024 16:34:25 GMT Organization: Stefan Ram Lines: 26 Expires: 1 Jul 2025 11:59:58 GMT Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: news.uni-berlin.de 67mVfpzbUTEc/GX++tP25AYQnAu5KepuI3StACVAh78TS4 Cancel-Lock: sha1:vFoeYw/7JeZWMAhLdbKmhtRQ74U= sha256:0Sa+TJXAeqyxSpJqkcJjTlrqSzUTQo6OwhoN/l7FwJc= X-Copyright: (C) Copyright 2024 Stefan Ram. All rights reserved. Distribution through any means other than regular usenet channels is forbidden. It is forbidden to publish this article in the Web, to change URIs of this article into links, and to transfer the body without this notice, but quotations of parts in other Usenet posts are allowed. X-No-Archive: Yes Archive: no X-No-Archive-Readme: "X-No-Archive" is set, because this prevents some services to mirror the article in the web. But the article may be kept on a Usenet archive server with only NNTP access. X-No-Html: yes Content-Language: en-US Bytes: 2707 ram@zedat.fu-berlin.de (Stefan Ram) wrote or quoted: >This video might be a hit with some folks: "The strange details >of std__string at Facebook" - Nicholas Ormrod, CppCon 2016. Also, "Efficiency with Algorithms, Performance with Data Structures" - Chandler Carruth, CppCon 2014, from which I take: CPUS HAVE A HIERARCHICAL CACHE SYSTEM One cycle on a 3 GHz processor 1 ns L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns 14x L1 cache Mutex lock/unlock 25 ns Main memory reference 100 ns 20xL2, 200xL1 Compress 1K bytes with Snappy 3,000 ns Send 1K bytes over 1 Gbps network 10,000 ns 0.01 ms Read 4K randomly from SSD 150,000 ns 0.15 ms Read 1 MB sequentially from memory 250,000 ns 0.25 ms Round trip within same datacenter 500,000 ns 0.5 ms Read 1 MB sequentially From SSD 1,000,000 ns 1 ms 4x memory Disk seek 10,000,000 ns 10 ms 20xdatacen. RT Read 1 MB sequentially from disk 20,000,000 ns 20 ms 80xmem.,20xSSD Send packet CA->Netherlands->CA 150,000,000 ns 150 ms .