<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: y4u</title>
    <description>The latest articles on DEV Community by y4u (@amru195704).</description>
    <link>https://dev.to/amru195704</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1466730%2F7b49a169-2811-48c7-98a1-214aab4983cf.jpeg</url>
      <title>DEV Community: y4u</title>
      <link>https://dev.to/amru195704</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amru195704"/>
    <language>en</language>
    <item>
      <title>How to Open a 50GB Log File — and Reopen It in 0.05 Seconds. A klogg Alternative, Benchmarked</title>
      <dc:creator>y4u</dc:creator>
      <pubDate>Sat, 29 Aug 2026 03:10:12 +0000</pubDate>
      <link>https://dev.to/amru195704/how-to-open-a-50gb-log-file-and-reopen-it-in-005-seconds-a-klogg-alternative-benchmarked-2i29</link>
      <guid>https://dev.to/amru195704/how-to-open-a-50gb-log-file-and-reopen-it-in-005-seconds-a-klogg-alternative-benchmarked-2i29</guid>
      <description>&lt;p&gt;If you searched for a &lt;strong&gt;klogg alternative&lt;/strong&gt;, you probably already know klogg is good. It is fast, it is free, it is open source, and it runs on Windows, macOS and Linux. Most people who go looking for something else are not unhappy with klogg as a viewer. They are unhappy with one specific moment in their day:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opening the file again.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You investigated a 48GB log yesterday. You closed it. This morning your colleague asks about a different error, and you have to wait through the whole index build a second time. On a USB HDD that is nine minutes of staring at a progress bar — and while it builds, klogg only shows you the beginning of the file.&lt;/p&gt;

&lt;p&gt;That is the problem this article is about. Below is a measured comparison on a real 47.73GB file, including &lt;strong&gt;the rows where klogg wins&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The test
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;File&lt;/td&gt;
&lt;td&gt;OpenStreetMap Japan &lt;code&gt;japan-latest.osm&lt;/code&gt; — &lt;strong&gt;47.73 GB, 892,239,125 lines&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Machine&lt;/td&gt;
&lt;td&gt;MacBook Air / Apple M4 (10 cores) / 32GB RAM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage (measured with &lt;code&gt;dd&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;USB HDD 0.10 GB/s ／ USB SSD 0.41 GB/s ／ Internal SSD 3.29 GB/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Versions&lt;/td&gt;
&lt;td&gt;klogg 24.11.0 ／ UwView Pro&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Search hit counts were verified to match &lt;strong&gt;exactly&lt;/strong&gt; across klogg, UwView Pro, and a direct search of the raw file — so we know both tools are answering the same question.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;klogg 24.11.0&lt;/th&gt;
&lt;th&gt;UwView Pro&lt;/th&gt;
&lt;th&gt;Ratio&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;First open&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;HDD ~9 min ／ USB SSD ~110 s ／ Internal SSD ~15 s — &lt;strong&gt;every time&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;HDD 10.6 min ／ USB SSD 138.5 s ／ Internal SSD 23.3 s — &lt;strong&gt;first time only&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;klogg wins&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reopening&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Same as the first open (re-indexes every time)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.01–0.07 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~1,250–50,000x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search, literal &lt;code&gt;"Tokyo"&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;~585 s ／ 120–135 s ／ 15–20 s&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;74.8 s ／ 14.3 s ／ 5.1 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~7.8x ／ ~9x ／ 3–4x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search, regex &lt;code&gt;"Tok[yi]o"&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;≈ literal (I/O bound, pattern-independent)&lt;/td&gt;
&lt;td&gt;29.8 s (USB SSD) ／ 11.0 s (Internal SSD)&lt;/td&gt;
&lt;td&gt;~4.4x ／ ~1.5x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Disk used to keep the file&lt;/td&gt;
&lt;td&gt;48 GB (original required)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;5.3 GB&lt;/strong&gt; (original can be deleted)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1/9&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two things are worth saying plainly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;klogg opens the file faster the first time.&lt;/strong&gt; UwView Pro is slower on the first open because it is building a compressed cache while it reads. That is a real cost and we are not going to hide it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You pay klogg's cost every single time.&lt;/strong&gt; UwView Pro pays it once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the difference exists
&lt;/h2&gt;

&lt;p&gt;klogg builds its line index in memory. Close the window and the index is gone. This is a perfectly reasonable design — it keeps the tool simple and leaves nothing behind on your disk.&lt;/p&gt;

&lt;p&gt;UwView Pro writes a &lt;strong&gt;compressed sidecar cache&lt;/strong&gt; next to your file: a single &lt;code&gt;.uwvz&lt;/code&gt; file with the line index built in and a checksum to detect corruption. The next time you open the file, there is nothing to rebuild. The index is already there.&lt;/p&gt;

&lt;p&gt;The cache is also why the search is faster. Searching the &lt;code&gt;.uwvz&lt;/code&gt; means reading roughly one ninth as many bytes off the disk. &lt;strong&gt;The slower your storage, the bigger the gap&lt;/strong&gt; — on a USB HDD, a literal search drops from about ten minutes to 75 seconds.&lt;/p&gt;

&lt;p&gt;There is a second consequence that surprised us more than the speed did. Because the &lt;code&gt;.uwvz&lt;/code&gt; contains everything needed to read the file, &lt;strong&gt;you can delete the original 48GB and still browse and search the log at 5.3GB&lt;/strong&gt;. For teams that keep finished incident logs "just in case," that changes the storage math.&lt;/p&gt;

&lt;h2&gt;
  
  
  One more thing: you can move around while it indexes
&lt;/h2&gt;

&lt;p&gt;klogg shows you the head of the file until indexing finishes. You cannot jump to the middle or the end.&lt;/p&gt;

&lt;p&gt;UwView displays by byte position, so &lt;strong&gt;the whole file is navigable the moment you open it&lt;/strong&gt;. Jump to the end of a 258GB file at 10% indexed and it will show you the end. We have &lt;a href="https://uvp.y42u.net/en/blog/uwview-osm-usa-258gb-en/" rel="noopener noreferrer"&gt;done exactly that on a 4.5-billion-line file&lt;/a&gt; — the entire United States OpenStreetMap extract expanded to XML, 258.68 GB.&lt;/p&gt;

&lt;p&gt;If your workflow is "open it, immediately jump to the timestamp where things broke," this matters more than raw index speed.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you should stay with klogg
&lt;/h2&gt;

&lt;p&gt;This is the section most comparison articles leave out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your files are under a few gigabytes.&lt;/strong&gt; At 3GB and 100 million lines the two tools are within seconds of each other on search. klogg's re-index at that size is 47 s / 8 s / 2 s depending on storage — annoying, not painful. The case for switching is weak.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You open each file exactly once.&lt;/strong&gt; All of UwView Pro's advantage is amortised across reopens. If you genuinely never come back to a file, you are paying the slower first open for nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You want open source.&lt;/strong&gt; klogg is open source. UwView is not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You need to edit.&lt;/strong&gt; UwView is a viewer, not an editor. If you need to change the file, neither klogg nor UwView will help you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You are on Windows and cannot accept an unsigned binary.&lt;/strong&gt; The Windows build of UwView Pro is currently unsigned, which means SmartScreen will warn you (More info → Run anyway). If your organisation blocks that, this is a hard stop for now.&lt;/p&gt;

&lt;h2&gt;
  
  
  When UwView Pro makes sense
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;You reopen the same large files.&lt;/strong&gt; This is the whole argument. If a 20GB log gets opened three times over a week, klogg costs you three full index builds and UwView Pro costs you one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your storage is slow.&lt;/strong&gt; Network shares, external drives, spinning disks. The gap widens as bandwidth drops, because the compressed cache reads a ninth of the bytes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You are archiving.&lt;/strong&gt; Keeping investigated logs at 1/9 the size, still directly openable, with checksum protection. We wrote about &lt;a href="https://uvp.y42u.net/en/blog/uwview-pro-archive-teaser-en/" rel="noopener noreferrer"&gt;that workflow separately&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your files are genuinely enormous.&lt;/strong&gt; We have measured 4.5 billion lines. We do not know where the ceiling is.&lt;/p&gt;

&lt;h2&gt;
  
  
  What about the other klogg alternatives?
&lt;/h2&gt;

&lt;p&gt;If you browse the alternatives listed for klogg, you will find a long tail of log viewers — GamutLogViewer, LogExpert, Chainsaw, Logbert, WinTail and others. Many of them are good at things klogg is not: structured log parsing, live tailing, colour rules per log format, database-backed search.&lt;/p&gt;

&lt;p&gt;Most of them are also &lt;strong&gt;Windows-only&lt;/strong&gt;, and — more to the point — most were not designed with a 48GB single file in mind. "Log viewer" covers two quite different problems: &lt;em&gt;understanding structured logs&lt;/em&gt; and &lt;em&gt;surviving enormous files&lt;/em&gt;. If your problem is the first one, a purpose-built log analyser will serve you better than either klogg or UwView.&lt;/p&gt;

&lt;p&gt;UwView is built for the second problem, and only for that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free version vs Pro
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;UwView (free)&lt;/strong&gt; opens huge files with the same byte-position navigation. On first open it is comparable to klogg and other tools. No sidecar cache, so reopening re-reads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UwView Pro&lt;/strong&gt; adds the compressed &lt;code&gt;.uwvz&lt;/code&gt; cache: instant reopen, faster search, 1/9 storage. &lt;strong&gt;one-time or monthly&lt;/strong&gt;, and &lt;strong&gt;one licence covers Windows 10/11, macOS 11+ (Apple Silicon and Intel), and Linux x86_64&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There is also a &lt;a href="https://amru195704.github.io/UwView/" rel="noopener noreferrer"&gt;browser build (WASM)&lt;/a&gt; if you want to try the interface without installing anything, though it is naturally slower than native.&lt;/p&gt;

&lt;h2&gt;
  
  
  Update (Aug 26, 2026): the search gap has since reversed
&lt;/h2&gt;

&lt;p&gt;When this article was written, klogg's Boolean search was one of the rows where klogg won. UwView Pro &lt;strong&gt;v1.3.0+&lt;/strong&gt; changed that with two new modes: &lt;strong&gt;Drill-down search&lt;/strong&gt; (refine results with the next term, up to 8 stages in tabs — narrowing co-occurrence &lt;em&gt;across nearby lines&lt;/em&gt;, which single-line Boolean can't do) and &lt;strong&gt;Sequence search&lt;/strong&gt; (only the flows where w1 → w2 → w3 appear &lt;em&gt;in that order&lt;/em&gt; — the local-file equivalent of EQL's &lt;code&gt;sequence&lt;/code&gt;, with no klogg counterpart). Details: &lt;a href="https://uvp.y42u.net/en/blog/uvp-drilldown-search-en/" rel="noopener noreferrer"&gt;Drill-down&lt;/a&gt; / &lt;a href="https://uvp.y42u.net/en/blog/uvp-sequence-search-en/" rel="noopener noreferrer"&gt;Sequence&lt;/a&gt;. Everything else in this article, including the rows klogg wins, is unchanged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://uvp.y42u.net/en/blog/uwview-klogg-feature-comparison-v111-en/" rel="noopener noreferrer"&gt;An honest feature comparison with klogg&lt;/a&gt; — every row, including the ones we lose&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-pro-benchmark-3sizes-en/" rel="noopener noreferrer"&gt;The full 3GB / 10GB / 48GB benchmark across three storage types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-osm-usa-258gb-en/" rel="noopener noreferrer"&gt;Opening 258.68 GB and 4.5 billion lines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/pro-en/" rel="noopener noreferrer"&gt;Product page and download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://alternativeto.net/software/uwview/about/" rel="noopener noreferrer"&gt;UwView on AlternativeTo&lt;/a&gt; — listed as an alternative to klogg, glogg, BareTail and Log Voyager&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;If you try it against a file that breaks it, we would like to hear about it. That is how we found out 890 million lines was not the limit.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>performance</category>
      <category>productivity</category>
      <category>linux</category>
    </item>
    <item>
      <title>[In Development] Editing a 48GB File and Saving Mid-Way: EmEditor vs UwEditor Pro</title>
      <dc:creator>y4u</dc:creator>
      <pubDate>Sat, 29 Aug 2026 03:09:09 +0000</pubDate>
      <link>https://dev.to/amru195704/in-development-editing-a-48gb-file-and-saving-mid-way-emeditor-vs-uweditor-pro-3iik</link>
      <guid>https://dev.to/amru195704/in-development-editing-a-48gb-file-and-saving-mid-way-emeditor-vs-uweditor-pro-3iik</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This is a test log for a product still in development. UwEditor Pro is not for sale yet, and there is no release date.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-emeditor-48gb-comparison-en/" rel="noopener noreferrer"&gt;Last time&lt;/a&gt; we compared "opening a 48GB file and searching it." This time we go one step further — &lt;strong&gt;editing it, and saving part-way through.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Same PC, same 48GB file, same search term.&lt;/strong&gt; The conditions are held constant.&lt;/p&gt;

&lt;p&gt;The comparison is again against &lt;strong&gt;EmEditor Professional&lt;/strong&gt;. On Windows it is the practical benchmark for large-file work. And as we wrote last time, &lt;strong&gt;EmEditor is far ahead on editing features&lt;/strong&gt;. That has not changed.&lt;/p&gt;

&lt;p&gt;What changed is that the UwView side now has editing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results first
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;EmEditor (mean of 2 runs)&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;UwEditor Pro&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;Ratio&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Open the file&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;103.6 s&lt;/strong&gt; (116.8 / 90.4)&lt;/td&gt;
&lt;td&gt;107.1 s&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Tie — EmEditor is marginally faster&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search for &lt;code&gt;東京&lt;/code&gt; (94,979 matching lines)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;194.7 s&lt;/strong&gt; (245.3 / 144)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;23.9 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~8x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Replace all &lt;code&gt;東京&lt;/code&gt; → &lt;code&gt;Tokyo&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;210.5 s&lt;/strong&gt; (257 / 164)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;35.9 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~6x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Mid-work save&lt;/strong&gt; (to stop and come back)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;31 min&lt;/strong&gt; (1,860 s)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;0 s&lt;/strong&gt; (instant)&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Final write-out&lt;/strong&gt; (produce one file)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;the same operation again — 31 min&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1 min 33 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~20x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The EmEditor figures are the &lt;strong&gt;mean of two runs&lt;/strong&gt;; both individual values are in brackets, because the spread is not small.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opening is a tie — if anything EmEditor is slightly ahead. Everything after that is where the gap opens.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this comparison applies — below ~10GB, EmEditor is faster
&lt;/h2&gt;

&lt;p&gt;Let me draw the boundary before anything else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The test machine has 16GB of RAM. A 48GB file does not fit in it.&lt;/strong&gt; Every number above comes from that condition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;At around 10GB — a file that fits in RAM — EmEditor is markedly faster at both search and replace.&lt;/strong&gt; On a machine with plenty of RAM, EmEditor stays fast on genuinely large files too.&lt;/p&gt;

&lt;p&gt;EmEditor is a &lt;strong&gt;capable, feature-rich editor, and more than sufficient for ordinary "large" files.&lt;/strong&gt; Macros, CSV editing, fine-grained regex control, plugins — on editing features there is no contest.&lt;/p&gt;

&lt;p&gt;UwEditor Pro only pulls ahead &lt;strong&gt;once the file exceeds available memory&lt;/strong&gt; — that region and nothing else. It was built for that one case; this is not a claim about which is the better editor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you open 10GB logs every day, use EmEditor.&lt;/strong&gt; This article only starts to matter when your files outgrow your RAM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test environment
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PC&lt;/td&gt;
&lt;td&gt;HP Spectre x360 (same machine as last time)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OS&lt;/td&gt;
&lt;td&gt;Windows 11 Home (x64)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;Intel Core i7-1165G7 2.80GHz (4 cores / 8 threads)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;16GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;Internal SSD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Test data&lt;/td&gt;
&lt;td&gt;OpenStreetMap Japan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File size&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;~48 GB&lt;/strong&gt; (the same file as last time)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lines&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~892 million&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Encoding&lt;/td&gt;
&lt;td&gt;UTF-8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search term&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;東京&lt;/code&gt; (Tokyo, in Japanese)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EmEditor&lt;/td&gt;
&lt;td&gt;Professional 64-bit v26.2.5 (same as last time)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UwEditor Pro&lt;/td&gt;
&lt;td&gt;v1.3.3 (development build)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Both products, same PC, same SSD, same file.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Opening — a tie
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;EmEditor 103.6 s (mean of 116.8 s and 90.4 s) / UwEditor Pro 107.1 s.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On this one item, EmEditor came out slightly ahead.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As we wrote last time, &lt;strong&gt;the first open produces no dramatic gap&lt;/strong&gt; — both have to physically read 48GB. We are not going to claim a win here.&lt;/p&gt;

&lt;p&gt;The difference appears from the second open onward, because UwEditor Pro stores a compressed index (&lt;code&gt;.uwvz&lt;/code&gt;). But that is not the subject of this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Search — 245.3 s becomes 23.9 s
&lt;/h2&gt;

&lt;p&gt;Searching for &lt;code&gt;東京&lt;/code&gt; matches &lt;strong&gt;94,979 lines&lt;/strong&gt;. Both products returned the same count — which is to say, they are answering the same question.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;EmEditor (run 1 / run 2)&lt;/td&gt;
&lt;td&gt;245.3 s / 144 s → &lt;strong&gt;mean 194.7 s&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UwEditor Pro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;23.9 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;About 8x.&lt;/strong&gt; Three minutes, or twenty-four seconds. Once is noise; investigation means running dozens of searches.&lt;/p&gt;

&lt;h3&gt;
  
  
  Part of this gap is thread count
&lt;/h3&gt;

&lt;p&gt;To be precise about what the number means: &lt;strong&gt;this 8x is not algorithm alone.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;EmEditor was &lt;strong&gt;configured to use 8 threads&lt;/strong&gt;. In practice it &lt;strong&gt;appeared to run on a single thread&lt;/strong&gt; — presumably an automatic decision based on available memory and file size. &lt;strong&gt;UwEditor Pro ran on 8 threads.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So the gap includes &lt;strong&gt;a difference in the parallelism actually used under these conditions.&lt;/strong&gt; &lt;strong&gt;On a machine with memory to spare, EmEditor would run in parallel and the gap would narrow.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is not a defect in EmEditor. It is &lt;strong&gt;the constraint imposed by handling 48 GB with 16 GB of RAM&lt;/strong&gt; — which is precisely what this article is about.&lt;/p&gt;

&lt;p&gt;EmEditor's second run dropped sharply, 245.3 s → 144 s (the OS file cache, presumably). &lt;strong&gt;Even against the faster 144 s, UwEditor Pro is 6x.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The reason is the same as last time: UwEditor Pro is reading a &lt;strong&gt;compressed index&lt;/strong&gt;, not the raw 48GB. Fewer bytes off the disk, less time.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Replace — 257 s becomes 35.9 s
&lt;/h2&gt;

&lt;p&gt;Replacing every &lt;code&gt;東京&lt;/code&gt; with &lt;code&gt;Tokyo&lt;/code&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;EmEditor (run 1 / run 2)&lt;/td&gt;
&lt;td&gt;257 s / 164 s → &lt;strong&gt;mean 210.5 s&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UwEditor Pro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;35.9 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;About 6x.&lt;/strong&gt; Against the faster 164 s it is still 4.6x.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Mid-work saving — the question of whether you can stop
&lt;/h2&gt;

&lt;p&gt;This is the difference that matters most in practice.&lt;/p&gt;

&lt;p&gt;Editing a huge file is not a single pass. You replace, you check, you fix something else — and &lt;strong&gt;you want to save along the way.&lt;/strong&gt; Before lunch. Before switching tasks. And simply because you do not want to lose what you have done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A normal editor rewrites the whole file on every one of those saves.&lt;/strong&gt; Change one spot in 48GB and you write 48GB back out. In this test, &lt;strong&gt;EmEditor's save took 31 minutes&lt;/strong&gt; (started 0:17, finished 0:48).&lt;/p&gt;

&lt;p&gt;This is not a story about saving being slow. It means &lt;strong&gt;you cannot save part-way — you cannot stop.&lt;/strong&gt; A 31-minute save cannot be inserted at every natural break in the work. Three saves and an hour and a half has gone to saving. You either finish the 48GB edit in one unbroken run, or you lose it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UwEditor Pro's mid-work save measured 0 seconds — done the instant you press it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The reason is non-destructive overlay editing. The &lt;code&gt;.uwvz&lt;/code&gt; (compressed index) stays &lt;strong&gt;immutable&lt;/strong&gt;; only the edit diff accumulates in &lt;code&gt;.ewvz&lt;/code&gt;. &lt;strong&gt;Only the diff is written&lt;/strong&gt;, so it finishes instantly regardless of how large the original is. In &lt;a href="https://uvp.y42u.net/en/blog/uep-100m-lines-replace-all-en/" rel="noopener noreferrer"&gt;a separate test&lt;/a&gt;, 21,994 changes to a 10.09GB file produced a diff of &lt;strong&gt;3.7MB&lt;/strong&gt; — 0.037% of the original.&lt;/p&gt;

&lt;p&gt;And the &lt;code&gt;.ewvz&lt;/code&gt; is on disk throughout the edit. &lt;strong&gt;If it crashes before you save, your edits are still there.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  "0 seconds" here means the mid-work save
&lt;/h3&gt;

&lt;p&gt;Producing &lt;strong&gt;one final file&lt;/strong&gt; — reconstructing a new &lt;code&gt;.uwvz&lt;/code&gt; from the &lt;code&gt;.uwvz&lt;/code&gt; + &lt;code&gt;.ewvz&lt;/code&gt; — is a separate operation, and that one does take time proportional to size. That is the next section.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Final write-out — 31 minutes becomes 1 min 33 s
&lt;/h2&gt;

&lt;p&gt;When the work is done, you write the result out as a single file. UwEditor Pro reconstructs a new &lt;code&gt;.uwvz&lt;/code&gt; from the immutable index plus the edit diff, in a single pass.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;EmEditor (rewrites the whole file)&lt;/td&gt;
&lt;td&gt;1,860 s (&lt;strong&gt;31 min&lt;/strong&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UwEditor Pro (&lt;code&gt;.uwvz&lt;/code&gt; reconstruction)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;93 s (1 min 33 s)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;About 20x.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For EmEditor this is the &lt;em&gt;same&lt;/em&gt; operation as the mid-work save. &lt;strong&gt;Every save, mid-work or final, rewrites 48GB.&lt;/strong&gt; UwEditor Pro spends 0 seconds on the mid-work ones and pays 1 min 33 s once, at the end.&lt;/p&gt;

&lt;p&gt;The reason is simple: what it writes out is a &lt;strong&gt;compressed index&lt;/strong&gt;, not a raw 48GB file.&lt;/p&gt;

&lt;p&gt;In the two previous articles we said we would measure the final write-out separately. &lt;strong&gt;This is that number.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens when you come back the next day
&lt;/h2&gt;

&lt;p&gt;Editing a huge file is rarely a one-day job. So let's include &lt;strong&gt;opening the same file again tomorrow.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Day 1 — open, search &amp;amp; replace, save
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;EmEditor&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;UwEditor Pro&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Open&lt;/td&gt;
&lt;td&gt;103.6 s&lt;/td&gt;
&lt;td&gt;107.1 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search &amp;amp; replace&lt;/td&gt;
&lt;td&gt;405.2 s&lt;/td&gt;
&lt;td&gt;59.8 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Save (to stop and come back)&lt;/td&gt;
&lt;td&gt;1,860 s (31 min)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~39.5 min&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~2.8 min&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;About 14x.&lt;/strong&gt; There is no "save" time on the UwEditor Pro side, because only the diff is written.&lt;/p&gt;

&lt;h3&gt;
  
  
  Day 2 — reopen the same file, finish the edit, write it out
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;EmEditor&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;UwEditor Pro&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Reopen&lt;/td&gt;
&lt;td&gt;103.6 s&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;too fast to time (milliseconds)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search &amp;amp; replace&lt;/td&gt;
&lt;td&gt;405.2 s&lt;/td&gt;
&lt;td&gt;59.8 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Write out as one file&lt;/td&gt;
&lt;td&gt;1,860 s (31 min)&lt;/td&gt;
&lt;td&gt;93 s (1 min 33 s)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~39.5 min&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~2.5 min&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;EmEditor pays exactly the same 39.5 minutes on day 2.&lt;/strong&gt; It reads 48 GB again, and writes 48 GB again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the UwEditor Pro side, "open" disappears.&lt;/strong&gt; The index (&lt;code&gt;.uwvz&lt;/code&gt;) is already on disk, so reopening &lt;strong&gt;could not be timed with a stopwatch&lt;/strong&gt; — it happens in milliseconds. In its place, the final write-out costs 1 min 33 s, once.&lt;/p&gt;

&lt;h3&gt;
  
  
  What these two tables show
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;On day 1 the saving design does the work&lt;/strong&gt; — only the diff is written, so it costs 0 s.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On day 2 the index design does the work&lt;/strong&gt; — nothing has to be read again.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;They are two separate designs, and they pay off on different days.&lt;/strong&gt; EmEditor spends the same 39.5 minutes on both. Day 3, day 4 — the gap keeps widening by that amount.&lt;/p&gt;

&lt;p&gt;Again: these are the numbers for &lt;strong&gt;a 16 GB-RAM machine handling a 48 GB file&lt;/strong&gt;. For a file that fits in RAM, EmEditor finishes first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Being straight about the limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UwEditor Pro is in development and not for sale.&lt;/strong&gt; There is no release date.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EmEditor is ahead on editing features.&lt;/strong&gt; Macros, CSV editing, fine-grained regex control, plugins — UwEditor Pro is a narrow tool for "changing a huge file without breaking it," not a replacement for EmEditor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;At around 10GB — a size that fits in RAM — EmEditor is markedly faster at both search and replace.&lt;/strong&gt; These results are for a 16GB-RAM machine handling 48GB. Change that condition and the order changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The search gap includes a difference in thread count.&lt;/strong&gt; EmEditor was set to 8 threads but appeared to run on one (presumably an automatic decision from memory and file size); UwEditor Pro ran on 8. &lt;strong&gt;With memory to spare, that gap should narrow.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;EmEditor was measured &lt;strong&gt;twice&lt;/strong&gt;; we published both the mean and the individual values. The two runs differ by up to 1.7x (the OS file cache, presumably). &lt;strong&gt;Even against the faster value, the gap holds.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;UwEditor Pro was measured &lt;strong&gt;once&lt;/strong&gt; per operation.&lt;/li&gt;
&lt;li&gt;EmEditor's save time (31 min) is the difference between start and finish times.&lt;/li&gt;
&lt;li&gt;In the day-2 table, &lt;strong&gt;every figure except "reopen" repeats the day-1 measurement&lt;/strong&gt; (it is the same operation). UwEditor Pro's reopen &lt;strong&gt;was too fast to measure&lt;/strong&gt; — milliseconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;This comparison is about one thing: changing a huge file and saving it.&lt;/strong&gt; It is not a statement about everyday editing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it relates to UwView Pro
&lt;/h2&gt;

&lt;p&gt;UwEditor Pro is a &lt;strong&gt;superset of UwView Pro&lt;/strong&gt;. If you only need to &lt;em&gt;read&lt;/em&gt; huge files today, &lt;strong&gt;UwView Pro — Huge Files, No Waiting&lt;/strong&gt; is the product that exists now.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/pro-en/" rel="noopener noreferrer"&gt;UwView Pro product page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-emeditor-48gb-comparison-en/" rel="noopener noreferrer"&gt;Previous: opening and searching a 48GB file&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uep-100m-lines-replace-all-en/" rel="noopener noreferrer"&gt;Replacing 21,994 occurrences in a 100-million-line file in 16.8 s&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>showdev</category>
      <category>performance</category>
      <category>productivity</category>
      <category>windows</category>
    </item>
    <item>
      <title>[In Development] I Replaced 21,994 Occurrences in a 10GB, 100-Million-Line File in 16.8 Seconds</title>
      <dc:creator>y4u</dc:creator>
      <pubDate>Sat, 29 Aug 2026 03:08:10 +0000</pubDate>
      <link>https://dev.to/amru195704/in-development-i-replaced-21994-occurrences-in-a-10gb-100-million-line-file-in-168-seconds-1580</link>
      <guid>https://dev.to/amru195704/in-development-i-replaced-21994-occurrences-in-a-10gb-100-million-line-file-in-168-seconds-1580</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This is a test log for a product still in development. UwEditor Pro is not for sale yet, and there is no release date.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is what happened when &lt;strong&gt;UwEditor Pro — Huge Files, No Rewriting&lt;/strong&gt; was pointed at a 100-million-line file.&lt;/p&gt;

&lt;p&gt;What I did was simple: open a 10.09GB XML file and replace every occurrence of &lt;code&gt;東京&lt;/code&gt; (Tokyo, in Japanese) with &lt;code&gt;Tokyo&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here is the result first.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;Measured&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Search for &lt;code&gt;東京&lt;/code&gt; (21,948 matching lines)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3.7 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Replace all &lt;code&gt;東京&lt;/code&gt; → &lt;code&gt;Tokyo&lt;/code&gt; (21,994 occurrences)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;16.8 s&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extra disk space the edit consumed&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3.7 MB&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;And — &lt;strong&gt;the original 10.09GB file was not modified by a single byte.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The file
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;File&lt;/td&gt;
&lt;td&gt;A split of the OpenStreetMap Japan extract, &lt;code&gt;japan-dv-aa&lt;/code&gt; (XML)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Size&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10.09 GB&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lines&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;100,000,000&lt;/strong&gt; (exactly 100 million)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Encoding&lt;/td&gt;
&lt;td&gt;UTF-8 (auto-detected)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Machine&lt;/td&gt;
&lt;td&gt;macOS / UwEditor Pro (development build)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;External USB SSD&lt;/strong&gt; (measured with &lt;code&gt;dd&lt;/code&gt; at &lt;strong&gt;0.41 GB/s&lt;/strong&gt;), not the internal drive&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  1. Open it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8bvsrx0a95xduxchlh2q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8bvsrx0a95xduxchlh2q.png" alt="uep-1.png" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The status bar reads &lt;code&gt;Total 100,000,000 lines&lt;/code&gt;. This part is the same as UwView Pro: &lt;strong&gt;the whole file is readable, scrollable and searchable the moment it opens&lt;/strong&gt;. The index already lives in the &lt;code&gt;.uwvz&lt;/code&gt; compressed cache, so line numbers are there from the start.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Enter edit mode
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg1e6srf591odjfqyxr1o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg1e6srf591odjfqyxr1o.png" alt="uep-2.png" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pressing &lt;strong&gt;Edit&lt;/strong&gt; in the toolbar reveals a replace bar under the search bar. Alongside &lt;em&gt;Replace next&lt;/em&gt; and &lt;em&gt;Replace all&lt;/em&gt; there are &lt;strong&gt;Delete matching lines&lt;/strong&gt;, &lt;em&gt;Delete selection&lt;/em&gt;, &lt;em&gt;Replace selection&lt;/em&gt; and &lt;em&gt;Delete this line&lt;/em&gt; — the operations you actually reach for when cleaning up logs.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Count what you are about to change
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkaal5oqiab8eav8hsq2x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkaal5oqiab8eav8hsq2x.png" alt="uep-3.png" width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before replacing anything, I counted with drill-down search: &lt;strong&gt;21,948 hits in 3.7 seconds&lt;/strong&gt;. A hundred million lines in under four seconds is possible because the search reads the &lt;strong&gt;compressed index (&lt;code&gt;.uwvz&lt;/code&gt;, 1.38GB)&lt;/strong&gt; rather than the raw 10.09GB — and this is on an &lt;strong&gt;external USB SSD measured at 0.41 GB/s&lt;/strong&gt;, not the internal drive (3.29 GB/s on the same machine).&lt;/p&gt;

&lt;p&gt;The list shows &lt;code&gt;東京&lt;/code&gt; scattered across operator names, place names and Wikipedia references — &lt;code&gt;&amp;lt;tag k="operator" v="東京臨海高速鉄道"/&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;tag k="wikipedia" v="ja:大久保駅 (東京都)"/&amp;gt;&lt;/code&gt;, and so on.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Replace all
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvfn75inbqrx3t0njmj3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvfn75inbqrx3t0njmj3w.png" alt="uep-4.png" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Type &lt;code&gt;Tokyo&lt;/code&gt; into the replacement field, press &lt;strong&gt;Replace all&lt;/strong&gt;, and a confirmation appears:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Replace 21,994 occurrences? (A single undo will revert this.)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Why 21,948 and 21,994 disagree
&lt;/h3&gt;

&lt;p&gt;The search says &lt;strong&gt;21,948&lt;/strong&gt;, the replace says &lt;strong&gt;21,994&lt;/strong&gt; — a gap of 46. That is not a bug. The two numbers count different things.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The search list counts &lt;strong&gt;lines&lt;/strong&gt; that contain a match.&lt;/li&gt;
&lt;li&gt;The replace counts &lt;strong&gt;occurrences&lt;/strong&gt; that will actually be rewritten.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One line in the list above reads &lt;code&gt;v="東京急行電鉄;東京地下鉄"&lt;/code&gt; — &lt;strong&gt;two occurrences on a single line&lt;/strong&gt;. Forty-six lines were like that.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Run it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7jmlsl22n1ykm893z0h8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7jmlsl22n1ykm893z0h8.png" alt="uep-5.png" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;21,994 occurrences replaced. Press Undo (Cmd/Ctrl+Z) once to revert.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;16.8 seconds&lt;/strong&gt;, for 21,994 changes inside 100 million lines.&lt;/p&gt;

&lt;p&gt;And the whole thing reverts with &lt;strong&gt;one undo&lt;/strong&gt;. The replacements are not 21,994 separate history entries; they are one operation.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Verify
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8yduvvaqnquv6tpxb115.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8yduvvaqnquv6tpxb115.png" alt="uep-6.png" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Searching again for &lt;code&gt;Tokyo&lt;/code&gt; now returns &lt;strong&gt;23,147 hits&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The file already contained &lt;code&gt;Tokyo&lt;/code&gt; on 1,153 lines (in &lt;code&gt;name:en&lt;/code&gt; tags, mostly), and the replacement stacked on top of that. Look closely and you can see entries like &lt;code&gt;v="ja:大塚駅 (Tokyo都)"&lt;/code&gt; — nonsense as Japanese, but exactly what a correct replacement should produce.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs4cejx1kyfzsrppykonk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs4cejx1kyfzsrppykonk.png" alt="uep-7.png" width="799" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jumping from a result lands you on the line itself — here, around line 73,000. Viewing and searching stay fully alive while the file is being edited.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Now look at the file sizes
&lt;/h2&gt;

&lt;p&gt;This is the actual point of the article.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1svg3up0jmy0oirzngj5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1svg3up0jmy0oirzngj5.png" alt="uep-8.png" width="606" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;Modified&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;japan-dv-aa&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10.09 GB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;July 16, 2026&lt;/td&gt;
&lt;td&gt;the original XML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;japan-dv-aa.uwvz&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.38 GB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;August 24, 2026&lt;/td&gt;
&lt;td&gt;compressed cache + index (~1/7)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;japan-dv-aa.ewvz&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3.7 MB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;today, 21:33&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;the edit&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Look at the modification dates.&lt;/strong&gt; Twenty-two thousand changes were made, and neither the original (July 16) nor the index (August 24) moved. They were never touched.&lt;/p&gt;

&lt;p&gt;The only thing created today is a &lt;strong&gt;3.7 MB &lt;code&gt;.ewvz&lt;/code&gt;&lt;/strong&gt; — &lt;strong&gt;0.037%&lt;/strong&gt; of the 10.09GB file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it works this way
&lt;/h2&gt;

&lt;p&gt;A normal text editor &lt;strong&gt;rewrites the entire file&lt;/strong&gt; every time you save. Change one line in a 10GB file and you write 10GB back out. That is why editing huge files is slow, and why a failure halfway through can destroy the original.&lt;/p&gt;

&lt;p&gt;UwEditor Pro uses &lt;strong&gt;non-destructive overlay editing&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;.uwvz&lt;/code&gt; (compressed cache + index) is &lt;strong&gt;immutable&lt;/strong&gt;. It is only ever read.&lt;/li&gt;
&lt;li&gt;Edits accumulate as a &lt;strong&gt;diff&lt;/strong&gt; in &lt;code&gt;.ewvz&lt;/code&gt; — a record of what was changed to what.&lt;/li&gt;
&lt;li&gt;What you see on screen is the &lt;strong&gt;composite&lt;/strong&gt; of the two.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So &lt;strong&gt;the cost of an edit does not depend on the size of the file&lt;/strong&gt;. Whether it is 10GB or 100GB, changing one line costs the same.&lt;/p&gt;

&lt;p&gt;There is a second, quieter property that matters in practice. In the screenshots above the app still reports &lt;strong&gt;"editing (unsaved)"&lt;/strong&gt; — and the &lt;code&gt;.ewvz&lt;/code&gt; is already on disk. &lt;strong&gt;If it crashes before you save, your edits are still there.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Being straight about the limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UwEditor Pro is in development and not for sale.&lt;/strong&gt; There is no release date.&lt;/li&gt;
&lt;li&gt;These are &lt;strong&gt;single measurements&lt;/strong&gt; on macOS, against a file on an &lt;strong&gt;external USB SSD&lt;/strong&gt; — not the internal drive — that had already been converted to &lt;code&gt;.uwvz&lt;/code&gt;. The &lt;strong&gt;internal SSD on the same machine runs at 3.29 GB/s&lt;/strong&gt;, so these numbers should shrink there (same machine and same method as our &lt;a href="https://uvp.y42u.net/en/blog/uwview-pro-benchmark-3sizes-en/" rel="noopener noreferrer"&gt;3-size, 3-storage benchmark&lt;/a&gt;). Slower storage will stretch them instead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;16.8 seconds is the cost of &lt;em&gt;editing&lt;/em&gt;, not of &lt;em&gt;writing out&lt;/em&gt;.&lt;/strong&gt; Pressing Save reconstructs a new &lt;code&gt;.uwvz&lt;/code&gt; from the &lt;code&gt;.uwvz&lt;/code&gt; + &lt;code&gt;.ewvz&lt;/code&gt; in a single pass, and that does take time proportional to size.

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;[Update, Aug 29, 2026] We measured it.&lt;/strong&gt; On Windows, with a 48 GB file, the write-out took &lt;strong&gt;1 min 33 s&lt;/strong&gt;.
Saving the same file in EmEditor — which rewrites the whole file — took &lt;strong&gt;31 minutes&lt;/strong&gt;, about 20x longer.
Details → &lt;a href="https://uvp.y42u.net/en/blog/uep-emeditor-48gb-edit-comparison-en/" rel="noopener noreferrer"&gt;Editing a 48 GB file, and saving mid-way&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The edit target is a &lt;code&gt;.uwvz&lt;/code&gt; file. UwEditor Pro standardises on &lt;code&gt;.uwvz&lt;/code&gt; as the thing it edits.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it relates to UwView Pro
&lt;/h2&gt;

&lt;p&gt;UwEditor Pro is a &lt;strong&gt;superset of UwView Pro&lt;/strong&gt;. The drill-down search used above, and the instant reopen, come along unchanged — editing is added on top.&lt;/p&gt;

&lt;p&gt;If you only need to &lt;em&gt;read&lt;/em&gt; huge files today, &lt;strong&gt;UwView Pro — Huge Files, No Waiting&lt;/strong&gt; is the product that exists now.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/pro-en/" rel="noopener noreferrer"&gt;UwView Pro product page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uvp-drilldown-search-en/" rel="noopener noreferrer"&gt;Drill-down search explained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-emeditor-48gb-comparison-en/" rel="noopener noreferrer"&gt;An honest benchmark against EmEditor and klogg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;If 10GB costs 0.037%, 100GB should cost about the same proportion. If you have a file that breaks it, we would like to hear about it — that is how we found out 890 million lines was not the limit.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>performance</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Find Only Where 'New York Central Park coffee_shop' Appear in That Order — Sequence Search on a 258 GB Local File</title>
      <dc:creator>y4u</dc:creator>
      <pubDate>Wed, 26 Aug 2026 12:45:55 +0000</pubDate>
      <link>https://dev.to/amru195704/find-only-where-new-york-central-park-coffeeshop-appear-in-that-order-sequence-search-on-a-lh3</link>
      <guid>https://dev.to/amru195704/find-only-where-new-york-central-park-coffeeshop-appear-in-that-order-sequence-search-on-a-lh3</guid>
      <description>&lt;p&gt;A follow-up to &lt;a href="https://uvp.y42u.net/en/blog/uvp-drilldown-search-en/" rel="noopener noreferrer"&gt;Drill-down Search&lt;/a&gt;: the same tabbed UI now has a second mode, &lt;strong&gt;Sequence Search&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnewamucrkaaepqkgh5yw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnewamucrkaaepqkgh5yw.png" alt="Drill-down search: New York 100,492 → Central Park 226 → coffee_shop 3" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What does searching by "order" mean?
&lt;/h2&gt;

&lt;p&gt;Drill-down finds words that occur &lt;strong&gt;near each other&lt;/strong&gt;. Sequence Search finds &lt;strong&gt;order&lt;/strong&gt;: only the places where w1 → w2 → w3 appear &lt;strong&gt;in that sequence&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In log terms: you want only the spots where "&lt;strong&gt;login → timeout → restart&lt;/strong&gt;" happened in that order. An and/or search can only say "all three words are present" — but an incident is a story, and stories have order. A different order is a different incident.&lt;/p&gt;

&lt;p&gt;In the security world this is exactly Elastic EQL's &lt;code&gt;sequence&lt;/code&gt; and Splunk's &lt;code&gt;transaction&lt;/code&gt; — but both require the data to be ingested into a server first. &lt;strong&gt;Almost nothing lets you do this against a multi-gigabyte file sitting on your own machine.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Real example: 1,246 "New York → Central Park → coffee_shop" flows in 4.5 billion lines
&lt;/h2&gt;

&lt;p&gt;The cover image is the &lt;strong&gt;entire US&lt;/strong&gt; OpenStreetMap extract — 258.68 GB, 4,509,830,821 lines, searched directly from its compressed &lt;code&gt;.uwvz&lt;/code&gt; archive:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New York (100,492) → Central Park (2,798) → coffee_shop (1,246)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"New York" appears 100,492 times. 2,798 of those are later followed by "Central Park" — and &lt;strong&gt;1,246&lt;/strong&gt; flows continue on to "coffee_shop". Note how different this is from Drill-down on the same three words (100,492 → 226 → 3): Drill-down finds the words &lt;em&gt;near each other&lt;/em&gt;; Sequence links occurrences &lt;strong&gt;in order, however far apart&lt;/strong&gt; — the flow in the screenshot chains hits tens of thousands of lines apart (line 151,568,463 → 151,599,349 → 151,616,193). Usage is identical to Drill-down: switch the refine bar's mode to "Sequence" and keep adding words.&lt;/p&gt;

&lt;p&gt;If an earlier word reappears mid-match, the automaton restarts from it (New York → Central Park → another New York? Matching resumes from the new New York). What survives is only the &lt;strong&gt;clean, uninterrupted flow&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The path itself is visible — the History menu
&lt;/h2&gt;

&lt;p&gt;My favorite part of this implementation is the right-click menu on any result.&lt;/p&gt;

&lt;p&gt;Open &lt;strong&gt;History (drill-down path)&lt;/strong&gt; and you see the position of every word that formed that sequence — e.g. "line 151,568,463: New York → line 151,599,349: Central Park → line 151,616,193: coffee_shop" — and you can &lt;strong&gt;jump to the file at any of those lines&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No reverse-engineering "why did this line match?" in your head. &lt;strong&gt;You see the actual path of the matched flow, and you can walk it.&lt;/strong&gt; Even EQL and Splunk don't show it this directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Speed
&lt;/h2&gt;

&lt;p&gt;Each stage of Sequence Search scans the file body &lt;strong&gt;starting from the previous stage's result positions&lt;/strong&gt;. The starting points are narrowed, but the processing itself is equivalent to a full-text search — so &lt;strong&gt;each stage takes roughly as long as a full-text search&lt;/strong&gt;. This is the one way it differs from Drill-down, where stages after the first are instant (Drill-down only re-searches inside the previous stage's ±N context blocks). As with Drill-down, the ±N context lines are set independently per stage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get it
&lt;/h2&gt;

&lt;p&gt;Drill-down and Sequence Search ship in &lt;strong&gt;UwView Pro V1.3 — released and available now&lt;/strong&gt;. The free edition keeps the classic single-stage search with ±1 context and result export.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UwView Pro V1.3&lt;/strong&gt; is available on Polar. The &lt;strong&gt;monthly subscription comes with the first month free&lt;/strong&gt; (the one-time purchase has no free trial).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Buy UwView Pro (Polar — one-time $129 / $9 per month, first month free): &lt;a href="https://buy.polar.sh/polar_cl_37MuoKb8WjSfLZ7hhjaTTzwAVBxu2XyqbnuWe3aGzbj" rel="noopener noreferrer"&gt;https://buy.polar.sh/polar_cl_37MuoKb8WjSfLZ7hhjaTTzwAVBxu2XyqbnuWe3aGzbj&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;UwView Pro product page: &lt;a href="https://uvp.y42u.net/en/pro-en/" rel="noopener noreferrer"&gt;https://uvp.y42u.net/en/pro-en/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Free UwView: &lt;a href="https://github.com/amru195704/UwView" rel="noopener noreferrer"&gt;https://github.com/amru195704/UwView&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;One more thing: **UwEditor Pro&lt;/em&gt;&lt;em&gt;, an editing-capable superset of UwView Pro built on the same huge-file engine, is currently in development. More on that soon.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Related
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uvp-drilldown-search-en/" rel="noopener noreferrer"&gt;From 100,492 Hits to 3 in Two Clicks — Drill-down Search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-klogg-alternative-en/" rel="noopener noreferrer"&gt;A klogg Alternative, Benchmarked — open a 50 GB log and reopen it in 0.05 s&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>showdev</category>
      <category>security</category>
      <category>logging</category>
      <category>tools</category>
    </item>
    <item>
      <title>From 100,492 Hits to 3 in Two Clicks — Drill-down Search for Huge Local Files</title>
      <dc:creator>y4u</dc:creator>
      <pubDate>Wed, 26 Aug 2026 12:38:41 +0000</pubDate>
      <link>https://dev.to/amru195704/from-100492-hits-to-3-in-two-clicks-drill-down-search-for-huge-local-files-5644</link>
      <guid>https://dev.to/amru195704/from-100492-hits-to-3-in-two-clicks-drill-down-search-for-huge-local-files-5644</guid>
      <description>&lt;p&gt;&lt;a href="https://uvp.y42u.net/en/pro-en/" rel="noopener noreferrer"&gt;UwView Pro&lt;/a&gt; just gained &lt;strong&gt;Drill-down Search&lt;/strong&gt;: refine your search results with another term, then another — &lt;strong&gt;up to 8 stages&lt;/strong&gt;, each in its own tab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faf5m65g1ba3cbtcy25c4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faf5m65g1ba3cbtcy25c4.png" alt="Drill-down search: New York 100,492 → Central Park 226 → coffee_shop 3" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  It's the grep pipeline you already type every day
&lt;/h2&gt;

&lt;p&gt;When you dig through a big log on the command line, you write something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-C&lt;/span&gt; 5 &lt;span class="s2"&gt;"ERROR"&lt;/span&gt; huge.log | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"timeout"&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"db-server3"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;"Find ERROR, keep 5 lines of context, then keep only the chunks that also mention timeout, then db-server3." Drill-down Search is exactly that pipeline — as GUI tabs.&lt;/p&gt;

&lt;p&gt;Run a normal search and the results pop up as usual (same as the free edition). In Pro, the popup has a &lt;strong&gt;refine bar&lt;/strong&gt;: type the next term, hit Refine, and a new tab appears containing only the matches found &lt;strong&gt;within the ±N context of the previous stage&lt;/strong&gt;. Each tab shows &lt;code&gt;term (count)&lt;/code&gt;, so you can watch the numbers collapse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real example: finding one coffee shop in 258 GB / 4.5 billion lines
&lt;/h2&gt;

&lt;p&gt;The cover image is the &lt;strong&gt;entire US&lt;/strong&gt; OpenStreetMap extract — one XML file of 258.68 GB and 4,509,830,821 lines, opened &lt;strong&gt;directly from its compressed &lt;code&gt;.uwvz&lt;/code&gt; archive&lt;/strong&gt; without unpacking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New York (100,492) → Central Park (226) → coffee_shop (3)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"New York" alone: 100,492 hits in 30.28 s. Refine with "Central Park": 226. Refine with "coffee_shop": &lt;strong&gt;3&lt;/strong&gt;. Two refinements took 100k hits down to three — and hit #1 lands on a Starbucks at Central Park South (59th &amp;amp; Broadway branch), with its address, opening hours and latitude/longitude sitting right there in the raw tags. One coffee shop, surfaced out of 4.5 billion lines.&lt;/p&gt;

&lt;p&gt;Three things worth noting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stages after the first are instant.&lt;/strong&gt; They only scan the previous stage's context blocks, so the only real wait is the initial full-text search.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;±N context is set per stage.&lt;/strong&gt; Keep intermediate stages tight, then open the final stage up (the screenshot uses ±12) to actually read the story.&lt;/li&gt;
&lt;li&gt;Every tab keeps the usual tools: jump to the source line, save results to a file — and a right-click &lt;strong&gt;History (drill-down path)&lt;/strong&gt; menu shows exactly which hits led you here, line numbers included.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How this differs from klogg's Boolean search
&lt;/h2&gt;

&lt;p&gt;klogg's and/or Boolean search works &lt;strong&gt;within a single line&lt;/strong&gt;. Drill-down finds &lt;strong&gt;co-occurrence across nearby lines&lt;/strong&gt; — and in real logs, the clues are almost never on one line.&lt;/p&gt;

&lt;p&gt;The same tabbed UI is also gaining &lt;strong&gt;Sequence Search&lt;/strong&gt; — detecting "w1 → w2 → w3 in that order," the desktop equivalent of Elastic EQL's &lt;code&gt;sequence&lt;/code&gt; or Splunk's &lt;code&gt;transaction&lt;/code&gt;. Almost nothing offers that against a multi-gigabyte local file. More on that soon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get it
&lt;/h2&gt;

&lt;p&gt;Drill-down Search ships in &lt;strong&gt;UwView Pro V1.3 — released and available now&lt;/strong&gt;. The free edition keeps the classic single-stage search with ±1 context and result export.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UwView Pro V1.3&lt;/strong&gt; is available on Polar. The &lt;strong&gt;monthly subscription comes with the first month free&lt;/strong&gt; (the one-time purchase has no free trial).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Buy UwView Pro (Polar — one-time $129 / $9 per month, first month free): &lt;a href="https://buy.polar.sh/polar_cl_37MuoKb8WjSfLZ7hhjaTTzwAVBxu2XyqbnuWe3aGzbj" rel="noopener noreferrer"&gt;https://buy.polar.sh/polar_cl_37MuoKb8WjSfLZ7hhjaTTzwAVBxu2XyqbnuWe3aGzbj&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;UwView Pro product page: &lt;a href="https://uvp.y42u.net/en/pro-en/" rel="noopener noreferrer"&gt;https://uvp.y42u.net/en/pro-en/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Free UwView: &lt;a href="https://github.com/amru195704/UwView" rel="noopener noreferrer"&gt;https://github.com/amru195704/UwView&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Related
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-klogg-alternative-en/" rel="noopener noreferrer"&gt;A klogg Alternative, Benchmarked — open a 50 GB log and reopen it in 0.05 s&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>showdev</category>
      <category>devops</category>
      <category>grep</category>
      <category>tools</category>
    </item>
    <item>
      <title>I Benchmarked My Free Viewer Against EmEditor and klogg — Honestly</title>
      <dc:creator>y4u</dc:creator>
      <pubDate>Mon, 24 Aug 2026 22:43:11 +0000</pubDate>
      <link>https://dev.to/amru195704/i-benchmarked-my-free-viewer-against-emeditor-and-klogg-honestly-2n0a</link>
      <guid>https://dev.to/amru195704/i-benchmarked-my-free-viewer-against-emeditor-and-klogg-honestly-2n0a</guid>
      <description>&lt;p&gt;If you ask "which text editor handles huge files?", EmEditor is usually the first name. Rightly so — it officially opens files up to 16 TB. I build &lt;a href="https://github.com/amru195704/UwView" rel="noopener noreferrer"&gt;UwView&lt;/a&gt;, a viewer specialized in huge files, and I'd already &lt;a href="https://uvp.y42u.net/en/blog/uwview-klogg-feature-comparison-en/" rel="noopener noreferrer"&gt;benchmarked it against klogg&lt;/a&gt; (the OSS log viewer). Time to face the commercial heavyweight.&lt;/p&gt;

&lt;p&gt;Same Windows laptop (16 GB RAM, internal SSD), same file: &lt;strong&gt;~48 GB, ~892 million lines&lt;/strong&gt; of OpenStreetMap Japan XML. Native x64 builds of both. Search term: "東京" (Tokyo).&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;EmEditor Pro 26.2.5&lt;/th&gt;
&lt;th&gt;UwView Pro 1.2.2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Jump to end right after opening&lt;/td&gt;
&lt;td&gt;not possible&lt;/td&gt;
&lt;td&gt;possible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Whole file navigable after&lt;/td&gt;
&lt;td&gt;4 min 06 s&lt;/td&gt;
&lt;td&gt;immediately&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Index building&lt;/td&gt;
&lt;td&gt;246 s&lt;/td&gt;
&lt;td&gt;74 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full-text search&lt;/td&gt;
&lt;td&gt;160 s&lt;/td&gt;
&lt;td&gt;12.5 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reopening the same file&lt;/td&gt;
&lt;td&gt;~4 min again&lt;/td&gt;
&lt;td&gt;instant (saved index)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three observations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;"It opens" ≠ "you can work."&lt;/strong&gt; EmEditor displayed the beginning promptly, but until loading hit 100% (4 min 06 s) you couldn't reach the end of the file. UwView also builds its index in the background — but the whole file is navigable &lt;em&gt;before&lt;/em&gt; the index completes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search compounds.&lt;/strong&gt; 160 s vs 12.5 s is ~2.5 minutes per search. Ten searches with different terms in one incident = ~24 minutes of difference, by simple arithmetic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The second day is where the gap grows.&lt;/strong&gt; EmEditor repeats the ~4-minute pass on every reopen. UwView Pro saves the index + compressed cache and reopens instantly.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where I lose, in writing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;EmEditor's editing features are overwhelming&lt;/strong&gt; — CSV mode, sorting, macros, decades of accumulation. It's not realistic for UwView to compete on feature count, so I don't. In the klogg comparison I published the table of everywhere klogg won, too. Losing in public is cheaper than being caught overselling.&lt;/p&gt;

&lt;p&gt;UwView competes on exactly one axis: &lt;strong&gt;the waiting time before you can start working on a huge file&lt;/strong&gt; — view instantly, search fast, reopen instantly, archive at ~1/9 and open without unpacking.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rich editing, CSV, macros → EmEditor&lt;/li&gt;
&lt;li&gt;View and search a huge file right now, once → UwView (free)&lt;/li&gt;
&lt;li&gt;Same huge files, repeatedly → &lt;a href="https://uvp.y42u.net/pro/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=d4-emeditor" rel="noopener noreferrer"&gt;UwView Pro&lt;/a&gt; (v1.3.0+; one license covers Windows/macOS/Linux, monthly plan has a one-month free period via Polar)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full write-ups: &lt;a href="https://uvp.y42u.net/en/blog/uwview-emeditor-48gb-comparison-en/" rel="noopener noreferrer"&gt;vs EmEditor&lt;/a&gt; · &lt;a href="https://uvp.y42u.net/en/blog/uwview-klogg-feature-comparison-en/" rel="noopener noreferrer"&gt;vs klogg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Measurements from one PC, one file, the versions listed (EmEditor is a product of Emurasoft, Inc.). Your mileage will vary — please verify with your own data. Everything shown is included in UwView Pro v1.3.0+.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>benchmark</category>
      <category>showdev</category>
      <category>opensource</category>
      <category>performance</category>
    </item>
    <item>
      <title>You Found the ERROR. The Cause Is in the Lines Before It</title>
      <dc:creator>y4u</dc:creator>
      <pubDate>Mon, 24 Aug 2026 22:07:36 +0000</pubDate>
      <link>https://dev.to/amru195704/you-found-the-error-the-cause-is-in-the-lines-before-it-1ij2</link>
      <guid>https://dev.to/amru195704/you-found-the-error-the-cause-is-in-the-lines-before-it-1ij2</guid>
      <description>&lt;p&gt;A real incident investigation starts the moment you find the ERROR line. &lt;strong&gt;The ERROR is the result — the cause is usually upstream.&lt;/strong&gt; The WARN just above it, a timeout a few seconds earlier, a config load hundreds of lines back. If you can't see those, your report says "an error occurred" and nothing more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where grep's context flags stop helping
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;grep -B 20 -A 5&lt;/code&gt; is a fine first step. Then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The context width is a &lt;strong&gt;guess made in advance&lt;/strong&gt;. If 20 lines wasn't enough, run it again&lt;/li&gt;
&lt;li&gt;The extracted fragment is &lt;strong&gt;a different text&lt;/strong&gt; — there's no way back to the original position when you want to go 2,000 more lines upstream&lt;/li&gt;
&lt;li&gt;With thousands of hits, you're now investigating your fragments instead of your log&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What the job actually needs: a &lt;strong&gt;hit list and the original file, side by side, staying in sync&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A live demo: 4.5 billion lines → one coffee shop, in 3 steps
&lt;/h2&gt;

&lt;p&gt;To show what drill-down search feels like, here's a real run — not on a log, but on something bigger: the entire US OpenStreetMap expanded to one XML file (258 GB, 4,509,830,821 lines), opened directly from its compressed &lt;code&gt;.uwvz&lt;/code&gt; archive without unpacking.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwurgejtj7wvh85friunp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwurgejtj7wvh85friunp.png" alt="Drill-down search" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;New York&lt;/code&gt;&lt;/strong&gt; → 100,492 hits in 30.28 s&lt;/li&gt;
&lt;li&gt;Drill down: &lt;strong&gt;&lt;code&gt;Central Park&lt;/code&gt;&lt;/strong&gt; → 226 hits&lt;/li&gt;
&lt;li&gt;Drill down again: &lt;strong&gt;&lt;code&gt;coffee_shop&lt;/code&gt;&lt;/strong&gt; → &lt;strong&gt;3 hits&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hit #1 lands on a Starbucks at Central Park South — opening hours, address, payment methods, latitude/longitude, all in the raw tags, with ±12 lines of context shown around the hit. A right-click shows &lt;strong&gt;History (drill-down path)&lt;/strong&gt;: the exact three steps that got you there, each with its line number.&lt;/p&gt;

&lt;p&gt;Swap the words and this is exactly an incident investigation: &lt;code&gt;ERROR&lt;/code&gt; → &lt;em&gt;payment service&lt;/em&gt; → &lt;em&gt;one request ID&lt;/em&gt;. From millions of lines to the one thread that matters, and the path is recorded.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fldphfv4th4f146o35kcc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fldphfv4th4f146o35kcc.png" alt="Drill-down search" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are two multi-stage modes, and the difference matters for logs. &lt;strong&gt;Drill-down&lt;/strong&gt; narrows &lt;em&gt;within&lt;/em&gt; the previous hits (100,492 → 226 → 3 above). &lt;strong&gt;Sequence&lt;/strong&gt; finds the terms &lt;em&gt;in order of appearance&lt;/em&gt; in the file — same three words gave 100,492 → 2,798 → 1,246 chains, each linking occurrences thousands of lines apart. On a map file that's a curiosity; on a log it's exactly how you trace causality: &lt;em&gt;deploy finished&lt;/em&gt; → &lt;em&gt;timeout&lt;/em&gt; → &lt;code&gt;ERROR&lt;/code&gt;, in that order, however far apart the lines are.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow (free)
&lt;/h2&gt;

&lt;p&gt;In &lt;a href="https://uvp.y42u.net/" rel="noopener noreferrer"&gt;UwView&lt;/a&gt;, search results open in an &lt;strong&gt;independent popup window&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the log (multi-GB is fine — readable the moment it opens), search &lt;code&gt;ERROR&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Double-click a hit → &lt;strong&gt;the main view jumps to that line and highlights it&lt;/strong&gt;. The popup stays open, so you bounce list → scene → list as often as you need&lt;/li&gt;
&lt;li&gt;At the scene, just &lt;strong&gt;scroll upward&lt;/strong&gt;. 20 lines or 20,000 — the context never gets cut off, because you're in the original file&lt;/li&gt;
&lt;li&gt;In the popup, turn on &lt;strong&gt;±1-line context&lt;/strong&gt; to skim every hit with the line before it. If the same WARN precedes every ERROR, you'll see it here&lt;/li&gt;
&lt;li&gt;Found a suspect? Search again for the request ID / thread ID and follow that one thread through time&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Save…&lt;/code&gt; writes the hits (optionally with surrounding lines) to a file — ready to attach to the report&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Add color rules (ERROR red, WARN yellow) and the pattern "yellow gets denser before the accident" becomes visible while scrolling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free vs Pro, honestly
&lt;/h2&gt;

&lt;p&gt;The whole investigation above is covered by the &lt;strong&gt;free edition&lt;/strong&gt; — jump, save, and ±1-line context included.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://uvp.y42u.net/pro/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=d3-error-context" rel="noopener noreferrer"&gt;UwView Pro&lt;/a&gt; (v1.3.0+) raises three ceilings for repeat work: context up to &lt;strong&gt;±64 lines&lt;/strong&gt;, an &lt;strong&gt;independent popup per tab&lt;/strong&gt; (line up an app log and a DB log, cross-check their ERROR lists), and instant reopen from a saved index (~0.02–0.07 s measured). One investigation: free is enough. Returning to the same logs daily: that's Pro territory.&lt;/p&gt;

&lt;p&gt;Full article: &lt;a href="https://uvp.y42u.net/en/blog/uwview-error-context-cause-en/" rel="noopener noreferrer"&gt;tracing context in a huge log&lt;/a&gt;. Source: &lt;a href="https://github.com/amru195704/UwView" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>debugging</category>
      <category>devops</category>
      <category>logging</category>
      <category>tools</category>
    </item>
    <item>
      <title>"File Too Large to Open" — Investigating a 50 GB Log Without Splitting It</title>
      <dc:creator>y4u</dc:creator>
      <pubDate>Mon, 24 Aug 2026 21:53:37 +0000</pubDate>
      <link>https://dev.to/amru195704/file-too-large-to-open-investigating-a-50-gb-log-without-splitting-it-5642</link>
      <guid>https://dev.to/amru195704/file-too-large-to-open-investigating-a-50-gb-log-without-splitting-it-5642</guid>
      <description>&lt;p&gt;Someone hands you a log for an incident investigation — and it's 10 GB, sometimes 50 GB. Double-clicking does nothing. Your editor freezes. The investigation stops before it starts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why editors give up
&lt;/h2&gt;

&lt;p&gt;Notepad dies at a few hundred MB. VS Code and Notepad++ freeze or drop into a restricted mode at a few GB. The reason is structural: &lt;strong&gt;an editor loads the whole file into memory so you can edit it.&lt;/strong&gt; A 50 GB log will never fit in 32 GB of RAM. This isn't a bug you can configure away — it's what editing requires.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "just split it" backfires
&lt;/h2&gt;

&lt;p&gt;The standard advice is &lt;code&gt;split -b 1G&lt;/code&gt;. In a real investigation, it makes things worse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Line numbers are gone&lt;/strong&gt; — you can't report "the error is on line N" anymore&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context is severed&lt;/strong&gt; — what happened right before the error now lives at the tail of a different file&lt;/li&gt;
&lt;li&gt;50 GB = 50 files to open one by one. &lt;strong&gt;Search becomes manual labor again&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What you need is not fragments. It's one log, viewable as one log.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow (free)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://uvp.y42u.net/" rel="noopener noreferrer"&gt;UwView&lt;/a&gt; is a free viewer for huge text files (Windows / macOS / Linux). It can't edit — in exchange, it starts displaying &lt;strong&gt;before&lt;/strong&gt; the file is fully read.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://uvp.y42u.net/download/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=d2-huge-log" rel="noopener noreferrer"&gt;Download&lt;/a&gt; (Windows: unzip and run, no installer)&lt;/li&gt;
&lt;li&gt;Drag &amp;amp; drop the log&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scroll immediately.&lt;/strong&gt; Drag the scrollbar to the bottom — you're at the newest entries&lt;/li&gt;
&lt;li&gt;Search "ERROR" from the toolbar (regex supported)&lt;/li&gt;
&lt;li&gt;Jump to a hit from the results list, read the surrounding lines in place&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Indexing runs in the background; line numbers appear when it's done. You don't wait for it.&lt;/p&gt;

&lt;p&gt;One measured data point: a &lt;strong&gt;47.73 GB, ~892-million-line&lt;/strong&gt; file (OSM data, USB SSD, 32 GB-RAM machine) — scrolling to the end and searching worked immediately after opening. The line-count ceiling is ~550 billion lines; in practice your disk runs out first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest scope note
&lt;/h2&gt;

&lt;p&gt;A one-off investigation — open once, find the error, read the context — &lt;strong&gt;is fully covered by the free edition&lt;/strong&gt;, including regex, color rules, and encoding auto-detection (CJK included).&lt;/p&gt;

&lt;p&gt;Two waits remain in the free edition: the index is rebuilt on every reopen, and every search reads the file itself. If you keep returning to the same logs, &lt;a href="https://uvp.y42u.net/pro/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=d2-huge-log" rel="noopener noreferrer"&gt;UwView Pro&lt;/a&gt; (v1.3.0+) saves the index and a compressed cache: reopen in ~0.02–0.07 s, search ~9× faster, and archive at ~1/9 size that opens without unpacking. For a one-time job, the free edition is enough — that's the honest split.&lt;/p&gt;

&lt;p&gt;Full walkthrough: &lt;a href="https://uvp.y42u.net/en/blog/uwview-huge-log-cannot-open-en/" rel="noopener noreferrer"&gt;the original article&lt;/a&gt;. Source: &lt;a href="https://github.com/amru195704/UwView" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figures are measurements in one environment and will vary.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>debugging</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>My Fanless Mac Skewed My Benchmark by 54% — Thermal Throttling and Round-Robin Measurement</title>
      <dc:creator>y4u</dc:creator>
      <pubDate>Fri, 14 Aug 2026 13:41:36 +0000</pubDate>
      <link>https://dev.to/amru195704/my-fanless-mac-skewed-my-benchmark-by-54-thermal-throttling-and-round-robin-measurement-b45</link>
      <guid>https://dev.to/amru195704/my-fanless-mac-skewed-my-benchmark-by-54-thermal-throttling-and-round-robin-measurement-b45</guid>
      <description>&lt;p&gt;While measuring how my search engine scales with thread count (results in the &lt;a href="https://dev.to/_156a59a8566fe532e165/how-many-search-threads-is-the-right-number-i-measured-089-billion-lines-at-1-16-threads-47ni"&gt;companion article&lt;/a&gt;, I threw away my entire first data set. Here's why — and if you ever benchmark anything on a fanless laptop, this is not someone else's problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first data set was clean, and wrong
&lt;/h2&gt;

&lt;p&gt;I measured 1 through 10 threads, in order. The curve looked beautiful, including a shiny record: "11 threads, fastest at 5.2 seconds." Right before writing the article, I re-ran the same conditions as a sanity check.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The same conditions came back up to 54% different.&lt;/strong&gt; 4 threads: 11.0s became 9.0s. 11 threads: 5.2s became 8.0s. The record run did not reproduce.&lt;/p&gt;

&lt;p&gt;No rogue background process. The culprit was the chassis.&lt;/p&gt;

&lt;h2&gt;
  
  
  The culprit: thermal history on a fanless machine
&lt;/h2&gt;

&lt;p&gt;The test machine is a MacBook Air (Apple M4) — &lt;strong&gt;fanless&lt;/strong&gt;. Under sustained load it heats up and thermal-throttles. Which means: &lt;strong&gt;every measurement depends on what you measured just before it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The nasty part is that this is not random noise — it's a &lt;strong&gt;systematic error&lt;/strong&gt;. Sweep 1→2→...→10 in order and the later thread counts always run on a hotter chip. The high-thread results are penalized, consistently, in the same direction. Averaging repeated sweeps doesn't remove it, because the bias repeats too. That "fastest 5.2s at 11 threads"? A single lucky run on a cold chip. The cleaner the graph, the more suspicious you should be.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix: round-robin
&lt;/h2&gt;

&lt;p&gt;Stop measuring each thread count in a block. Instead: &lt;strong&gt;sweep 1-16 threads once, repeat the whole sweep for 4 rounds, and take the per-thread-count median across rounds.&lt;/strong&gt; Every thread count now experiences cold and hot states equally; the thermal history no longer piles onto specific configurations.&lt;/p&gt;

&lt;p&gt;The corrected protocol (128 measurements) produced the companion article's conclusion: a plateau at 8 threads, 3.0x. The 5.2s ghost vanished; 7.4s became a reproducible floor.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you know the fix worked?
&lt;/h2&gt;

&lt;p&gt;Claiming "the new numbers are right" needs evidence. Mine: &lt;strong&gt;two search patterns with hit counts differing by more than an order of magnitude (10,967 vs. 722 hits) produced nearly identical scaling curves.&lt;/strong&gt; If heat or any other disturbance were still leaking in, there's no reason two independent series would line up that well.&lt;/p&gt;

&lt;p&gt;I kept the first CSV for reference but decided it never appears in an article. Publish a retracted number "for reference" and someday someone will cite it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;On a fanless machine, measurement order leaks into results.&lt;/strong&gt; A sequential sweep systematically penalizes the later configurations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distrust beautiful single records.&lt;/strong&gt; One cold run masquerades as a best case&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Round-robin + median distributes cold and hot fairly&lt;/strong&gt; across all configurations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate with independent series, not repetition.&lt;/strong&gt; Re-running the same biased protocol reproduces the same bias&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The benchmark's enemy wasn't a rival product. It was my own chassis.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;From the developer&lt;/strong&gt;: a list of my apps, Kindle books and open-source projects is on &lt;a href="https://github.com/amru195704" rel="noopener noreferrer"&gt;GitHub: amru195704&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A note&lt;/strong&gt;&lt;br&gt;
The information in this article is provided for reference purposes only, and its accuracy or completeness is not guaranteed. If you notice any errors or inaccuracies, please let us know in the comments and we will review and correct them.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>hardware</category>
      <category>performance</category>
      <category>programming</category>
    </item>
    <item>
      <title>How Many Search Threads Is the Right Number? I Measured 0.89 Billion Lines at 1-16 Threads</title>
      <dc:creator>y4u</dc:creator>
      <pubDate>Fri, 14 Aug 2026 13:30:46 +0000</pubDate>
      <link>https://dev.to/amru195704/how-many-search-threads-is-the-right-number-i-measured-089-billion-lines-at-1-16-threads-47ni</link>
      <guid>https://dev.to/amru195704/how-many-search-threads-is-the-right-number-i-measured-089-billion-lines-at-1-16-threads-47ni</guid>
      <description>&lt;p&gt;When you parallelize a text search, how many threads should you use? "One per core," "cores x 2," "physical cores only" — the folklore varies. The only number I trust is one measured on my own app, against real data.&lt;/p&gt;

&lt;p&gt;I benchmarked the search engine of &lt;a href="https://uvp.y42u.net/en/pro-en/" rel="noopener noreferrer"&gt;UwView Pro&lt;/a&gt;, my large-text viewer, against &lt;strong&gt;0.89 billion lines of real data at 1-16 threads&lt;/strong&gt;. The headline: &lt;strong&gt;it plateaus at 8 threads (3.0x over single-threaded)&lt;/strong&gt; — on a 10-core machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  The full methodology
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Machine: MacBook Air (Apple M4 / 10 cores = 4 performance + 6 efficiency / 32GB RAM / on AC power)&lt;/li&gt;
&lt;li&gt;Data: OpenStreetMap Japan &lt;code&gt;japan-latest.osm&lt;/code&gt; (48GB original, 0.89B lines) as a 5.3GB compressed &lt;code&gt;.uwvz&lt;/code&gt; cache&lt;/li&gt;
&lt;li&gt;Target: the search engine run standalone (&lt;code&gt;search-standalone&lt;/code&gt;) — no UI, no file-open cost&lt;/li&gt;
&lt;li&gt;Condition: warm cache. &lt;strong&gt;Cold-cache numbers were not measured this time&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Protocol: &lt;strong&gt;a 1-to-16-thread sweep repeated for 4 rounds (round-robin), taking the per-thread-count median across rounds&lt;/strong&gt; — 128 measurements total&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why round-robin instead of "measure 1, then 2, then 3..."? The M4 Air is fanless. Under sustained load it thermal-throttles, so &lt;strong&gt;measurement order leaks into the results as a systematic error&lt;/strong&gt;: a sequential sweep measures the later thread counts on a hotter chip. That story deserved its own post (see the companion article); every number below is from the corrected protocol.&lt;/p&gt;

&lt;p&gt;The harness is a single shell script driving the engine and dumping CSV; a Python script draws the plots.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;Two search patterns with very different hit counts:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Threads&lt;/th&gt;
&lt;th&gt;1&lt;/th&gt;
&lt;th&gt;2&lt;/th&gt;
&lt;th&gt;3&lt;/th&gt;
&lt;th&gt;4&lt;/th&gt;
&lt;th&gt;5&lt;/th&gt;
&lt;th&gt;6&lt;/th&gt;
&lt;th&gt;7&lt;/th&gt;
&lt;th&gt;8&lt;/th&gt;
&lt;th&gt;9&lt;/th&gt;
&lt;th&gt;10&lt;/th&gt;
&lt;th&gt;11&lt;/th&gt;
&lt;th&gt;12&lt;/th&gt;
&lt;th&gt;13&lt;/th&gt;
&lt;th&gt;14&lt;/th&gt;
&lt;th&gt;15&lt;/th&gt;
&lt;th&gt;16&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Tokyo&lt;/code&gt; (10,967 hits)&lt;/td&gt;
&lt;td&gt;22.2&lt;/td&gt;
&lt;td&gt;13.8&lt;/td&gt;
&lt;td&gt;11.5&lt;/td&gt;
&lt;td&gt;10.2&lt;/td&gt;
&lt;td&gt;9.2&lt;/td&gt;
&lt;td&gt;8.6&lt;/td&gt;
&lt;td&gt;7.8&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7.4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;7.4&lt;/td&gt;
&lt;td&gt;7.4&lt;/td&gt;
&lt;td&gt;7.8&lt;/td&gt;
&lt;td&gt;8.0&lt;/td&gt;
&lt;td&gt;7.9&lt;/td&gt;
&lt;td&gt;7.9&lt;/td&gt;
&lt;td&gt;7.6&lt;/td&gt;
&lt;td&gt;7.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Kamakura&lt;/code&gt; (722 hits)&lt;/td&gt;
&lt;td&gt;22.2&lt;/td&gt;
&lt;td&gt;13.6&lt;/td&gt;
&lt;td&gt;11.9&lt;/td&gt;
&lt;td&gt;10.2&lt;/td&gt;
&lt;td&gt;9.1&lt;/td&gt;
&lt;td&gt;8.4&lt;/td&gt;
&lt;td&gt;7.6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7.4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;7.6&lt;/td&gt;
&lt;td&gt;7.5&lt;/td&gt;
&lt;td&gt;8.0&lt;/td&gt;
&lt;td&gt;8.2&lt;/td&gt;
&lt;td&gt;7.9&lt;/td&gt;
&lt;td&gt;8.0&lt;/td&gt;
&lt;td&gt;7.8&lt;/td&gt;
&lt;td&gt;7.6&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8dksfub4htw3a7yw2tci.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8dksfub4htw3a7yw2tci.png" alt=" " width="799" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fat4vx0wa3f0055svgngd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fat4vx0wa3f0055svgngd.png" alt=" " width="799" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Three facts worth a headline
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. It plateaus at 8 threads: 22.2s single-threaded down to 7.4s (3.0x).&lt;/strong&gt; From there to 16 threads it stays flat at 7.4-8.2s. More threads don't help — but notably, oversubscription up to 16 didn't visibly hurt either.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The plateau is not "the core count."&lt;/strong&gt; This machine has 4 performance + 6 efficiency cores, 10 total. The plateau lands at &lt;strong&gt;8&lt;/strong&gt; — short of all 10 cores, well past the 4 P-cores. Neither core type alone explains it. Apply the "threads = cores" folklore here and you'd pick 10 (same speed as 8, so no harm, no gain); pick 4 and you're at 10.2s — 27% slower.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Hit count doesn't matter.&lt;/strong&gt; With hit counts differing by more than an order of magnitude (10,967 vs. 722), the two curves match almost perfectly. The work is dominated by how much you scan, not how much you find.&lt;/p&gt;

&lt;p&gt;One finer observation: the scaling is sublinear from the start — 1.6x at 2 threads against an ideal 2x. The overhead and memory-bandwidth contention begin with the second thread, not the ninth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;All numbers are warm-cache; cold was not measured&lt;/li&gt;
&lt;li&gt;One machine only (MacBook Air M4); a CPU/RAM matrix is a separate planned experiment&lt;/li&gt;
&lt;li&gt;Nothing beyond 16 threads was measured&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What this means for the product: automatic
&lt;/h2&gt;

&lt;p&gt;What the data says: on this machine and workload, ~8 threads is the sweet spot, and missing it in either direction costs you. And the sweet spot will move from machine to machine. A "number of threads" setting in the UI would mostly be a device for users to pick the wrong value.&lt;/p&gt;

&lt;p&gt;So UwView Pro &lt;strong&gt;chooses the thread count automatically&lt;/strong&gt; (&lt;code&gt;UWV_SHARDS=auto&lt;/code&gt; is the default). You configure nothing. This benchmark existed to decide what "auto" should do.&lt;/p&gt;

&lt;p&gt;If you regularly search huge logs or datasets, give &lt;a href="https://uvp.y42u.net/en/pro-en/" rel="noopener noreferrer"&gt;UwView Pro&lt;/a&gt; a look — persistent index, compressed-cache search, and ~1/9 storage make both reopening and searching a step faster (all OS, $129 one-time / $9 per month).&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;From the developer&lt;/strong&gt;: a list of my apps, Kindle books and open-source projects is on &lt;a href="https://github.com/amru195704" rel="noopener noreferrer"&gt;GitHub: amru195704&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A note&lt;/strong&gt;&lt;br&gt;
The information in this article is provided for reference purposes only, and its accuracy or completeness is not guaranteed. If you notice any errors or inaccuracies, please let us know in the comments and we will review and correct them.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>Reading Huge Logs by Color — a Highlighter That Doesn't Stutter at 100 Million Lines</title>
      <dc:creator>y4u</dc:creator>
      <pubDate>Tue, 11 Aug 2026 13:45:34 +0000</pubDate>
      <link>https://dev.to/amru195704/reading-huge-logs-by-color-a-highlighter-that-doesnt-stutter-at-100-million-lines-9m1</link>
      <guid>https://dev.to/amru195704/reading-huge-logs-by-color-a-highlighter-that-doesnt-stutter-at-100-million-lines-9m1</guid>
      <description>&lt;p&gt;In &lt;strong&gt;v1.1&lt;/strong&gt; of &lt;a href="https://uvp.y42u.net/en/blog/uwview-github-release-en/" rel="noopener noreferrer"&gt;UwView&lt;/a&gt;, my large-file text viewer (free, source on GitHub), I implemented a &lt;strong&gt;color highlighter&lt;/strong&gt;. When I &lt;a href="https://uvp.y42u.net/en/blog/uwview-klogg-feature-comparison-v111-en/" rel="noopener noreferrer"&gt;honestly compared features&lt;/a&gt; with the industry-standard &lt;a href="https://klogg.filimonov.dev/" rel="noopener noreferrer"&gt;klogg&lt;/a&gt;, "multi-keyword color highlighting" was a clear item on my loss list — something klogg had that UwView didn't. This release fills in that line on the scoreboard.&lt;/p&gt;

&lt;p&gt;And it didn't stop at catching up. UwView &lt;strong&gt;ships with use-case presets built in from the start&lt;/strong&gt;, and also supports &lt;strong&gt;exporting/importing&lt;/strong&gt; rule sets. This article walks through what you can now do — and the design choices that keep coloring smooth &lt;strong&gt;even on a 100-million-line file&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For testing I used an &lt;strong&gt;XML file with 100,000,000 lines&lt;/strong&gt; converted from OpenStreetMap Japan data.&lt;/p&gt;




&lt;h2&gt;
  
  
  Search's "Yellow" and Highlighting's "Red/Blue" Work Together at the Same Time
&lt;/h2&gt;

&lt;p&gt;The basic layout: body text on the left, search-results (filter) popup on the right. A search for "Wakayama" hit &lt;strong&gt;1,129 matches&lt;/strong&gt;, listed with ±1 line of surrounding context.&lt;/p&gt;

&lt;p&gt;The point to notice is that &lt;strong&gt;the yellow of the search match&lt;/strong&gt; and &lt;strong&gt;the red applied by the color highlighter&lt;/strong&gt; both appear on the same screen at the same time. UwView's highlighter is designed so that &lt;strong&gt;search matches are always drawn with top priority&lt;/strong&gt; — no matter how many colors you stack, &lt;strong&gt;the yellow of the term you're currently searching for always stays on top&lt;/strong&gt;. This avoids the common failure mode of this kind of feature, where too much coloring buries the search results.&lt;/p&gt;

&lt;p&gt;One more understated bit of engineering: coloring is &lt;strong&gt;evaluated only for the lines currently visible on screen&lt;/strong&gt;, each time. That's why, even with a 100-million-line file, the coloring never falls behind while scrolling.&lt;/p&gt;




&lt;h2&gt;
  
  
  Color Rules Are Built from Patterns and Background Colors
&lt;/h2&gt;

&lt;p&gt;Coloring is managed in a dedicated "Color Highlighter" dialog. Each line is one rule, assigning a &lt;strong&gt;text color&lt;/strong&gt; and a &lt;strong&gt;background color&lt;/strong&gt; to a &lt;strong&gt;pattern&lt;/strong&gt; (a literal string or a regular expression).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Regular expression support&lt;/strong&gt; — you can also color just the captured portion of a match.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Case sensitivity&lt;/strong&gt; (&lt;code&gt;Aa&lt;/code&gt;) and whether to &lt;strong&gt;highlight the whole line&lt;/strong&gt; can be set per rule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rules are prioritized top to bottom.&lt;/strong&gt; When rules overlap, the lower row wins; reorder with ▲▼.&lt;/li&gt;
&lt;li&gt;Too many colors makes things harder to distinguish — aim for &lt;strong&gt;around 8 to 12 colors per screen&lt;/strong&gt;. Colors come from a color-vision-friendly 32-color palette and cycle automatically as you add rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can &lt;strong&gt;save a rule set under a name&lt;/strong&gt;, so you can switch between them per project or per system you're monitoring.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bundled Presets for "syslog" and "Web Access Logs"
&lt;/h2&gt;

&lt;p&gt;This is the part that goes beyond simply catching up with klogg. UwView v1.1 &lt;strong&gt;ships with commonly used coloring rules built in&lt;/strong&gt;. Pick a preset, click "Load," and the colors apply on the spot.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;syslog / Linux&lt;/strong&gt; preset colors &lt;code&gt;emerg / alert / crit / err&lt;/code&gt; red, &lt;code&gt;warning&lt;/code&gt; orange, &lt;code&gt;notice / info&lt;/code&gt; green, and also assigns colors to the PID at the start of a line (&lt;code&gt;[number]&lt;/code&gt;) and to IP addresses.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Web access (HTTP)&lt;/strong&gt; preset lets you read HTTP status codes by color: &lt;code&gt;5xx&lt;/code&gt; red, &lt;code&gt;4xx&lt;/code&gt; orange, &lt;code&gt;3xx&lt;/code&gt; blue, &lt;code&gt;2xx&lt;/code&gt; green — clusters of errors jump out at you just from skimming an access log.&lt;/p&gt;

&lt;p&gt;These presets &lt;strong&gt;can be used as-is or rewritten to your own taste&lt;/strong&gt;. A finished rule set exports as a &lt;code&gt;.uwvhl&lt;/code&gt; file and can be shared with another machine or a teammate via import — you can hand out "site-specific coloring configurations" to everyone who needs them.&lt;/p&gt;




&lt;h2&gt;
  
  
  Search History and Predefined Filters Also Improved
&lt;/h2&gt;

&lt;p&gt;Alongside coloring, v1.1 raises the bar around &lt;strong&gt;search&lt;/strong&gt;: up to 50 history entries with autocomplete, and starred (★) searches saved for instant reuse from a dropdown. This too fills an area where klogg previously had the edge.&lt;/p&gt;

&lt;p&gt;The items still remaining on my loss list stay &lt;a href="https://github.com/amru195704/UwView" rel="noopener noreferrer"&gt;published openly in the repository&lt;/a&gt;. The policy of laying everything out honestly and filling gaps one by one is unchanged.&lt;/p&gt;

&lt;p&gt;One thing I'm particular about, though: &lt;strong&gt;even when adding a feature I was behind on, I don't copy klogg's implementation — I redesign it into a form that feels good to use every day before shipping it.&lt;/strong&gt; The color highlighter is exactly that: not just "you can apply colors," but "the search yellow stays on top at all times," "presets bundled for common use cases," and "only visible lines are evaluated, so speed never drops at 100 million lines" — the things you actually want once you're working with genuinely huge logs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;UwView v1.1 implements a &lt;strong&gt;color highlighter&lt;/strong&gt;, filling in one line on the list of items where klogg had the edge.&lt;/li&gt;
&lt;li&gt;Supports &lt;strong&gt;regular expressions, text/background colors, rule priority, and named saves&lt;/strong&gt;. Search-match yellow always stays on top, and coloring stays fast even at 100 million lines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ships with presets&lt;/strong&gt; for syslog, web access logs, and more; rule sets are shareable as &lt;code&gt;.uwvhl&lt;/code&gt; files via export/import.&lt;/li&gt;
&lt;li&gt;Search history and predefined filters also improved. Remaining gaps stay listed openly, to be filled in a form that's genuinely comfortable to use — not by copying klogg.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The commercial &lt;strong&gt;&lt;a href="https://uvp.y42u.net/en/pro-en/" rel="noopener noreferrer"&gt;UwView Pro&lt;/a&gt;&lt;/strong&gt; is also on sale (all OS: Windows/macOS/Linux; one-time $129 / $9 per month) — persistent index for instant reopens with line numbers, search up to ~9x faster, and ~1/9-size archival storage that opens directly. The color highlighter and presets covered here work the same way in Pro.&lt;/p&gt;

&lt;h3&gt;
  
  
  Related Articles
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-github-release-en/" rel="noopener noreferrer"&gt;UwView Released on GitHub — Renewing a Windows 95-Era Large-File Text Viewer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-klogg-feature-comparison-v111-en/" rel="noopener noreferrer"&gt;An Honest Comparison with klogg [v1.1.1]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-osm-realdata-en/" rel="noopener noreferrer"&gt;I Opened a Real 51GB, 890-Million-Line Dataset (OSM Japan) in UwView&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;klogg official documentation &lt;a href="https://github.com/variar/klogg/blob/master/DOCUMENTATION.md" rel="noopener noreferrer"&gt;https://github.com/variar/klogg/blob/master/DOCUMENTATION.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;amru195704/UwView (GitHub) &lt;a href="https://github.com/amru195704/UwView" rel="noopener noreferrer"&gt;https://github.com/amru195704/UwView&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;From the developer&lt;/strong&gt;: a list of my apps, Kindle books and open-source projects is on &lt;a href="https://github.com/amru195704" rel="noopener noreferrer"&gt;GitHub: amru195704&lt;/a&gt;. Screenshots of everything described here are in the &lt;a href="https://uvp.y42u.net/en/blog/uwview-v11-color-highlighter-en/" rel="noopener noreferrer"&gt;original article&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>I Rebuilt My 30-Year-Old Text Viewer in C#/Avalonia — It Matched the Industry-Standard klogg. Then I Redesigned It for Today's Hardware.</title>
      <dc:creator>y4u</dc:creator>
      <pubDate>Sat, 08 Aug 2026 13:36:13 +0000</pubDate>
      <link>https://dev.to/amru195704/i-rebuilt-my-30-year-old-text-viewer-in-cavalonia-it-matched-the-industry-standard-klogg-then-4a3c</link>
      <guid>https://dev.to/amru195704/i-rebuilt-my-30-year-old-text-viewer-in-cavalonia-it-matched-the-industry-standard-klogg-then-4a3c</guid>
      <description>&lt;p&gt;The design of my large-file text viewer &lt;a href="https://uvp.y42u.net/en/blog/uwview-github-release-en/" rel="noopener noreferrer"&gt;UwView&lt;/a&gt; traces back to &lt;strong&gt;the old UwView I distributed on Vector back in the Windows 95 era — 30 years ago&lt;/strong&gt;. I rebuilt it from scratch in C#/Avalonia, and released a premium edition, &lt;strong&gt;UwView Pro&lt;/strong&gt; (Windows/macOS/Linux; one-time $129 or $9/month; product page &lt;a href="https://uvp.y42u.net/en/pro-en/" rel="noopener noreferrer"&gt;https://uvp.y42u.net/en/pro-en/&lt;/a&gt;). Now that I have solid measurements from the core engine, here's a serious head-to-head against &lt;strong&gt;klogg&lt;/strong&gt;, the industry-standard viewer for huge log files.&lt;/p&gt;

&lt;p&gt;Cutting straight to the conclusion: &lt;strong&gt;when actually measured, klogg and the current (free) UwView performed at roughly the same level.&lt;/strong&gt; In other words — isn't the "industry standard" older than you'd expect? This article is about that, and about what happened when I redesigned that same architecture from scratch for today's hardware.&lt;/p&gt;




&lt;h2&gt;
  
  
  Test conditions — a real 48GB file, 892,239,125 lines
&lt;/h2&gt;

&lt;p&gt;All benchmarks were run under identical conditions on the identical file.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Target file: OSM data for all of Japan, &lt;code&gt;japan-latest.osm&lt;/code&gt; (&lt;strong&gt;47.73GB, 892,239,125 lines&lt;/strong&gt; — the same real-world data used in &lt;a href="https://uvp.y42u.net/en/blog/uwview-osm-realdata-en/" rel="noopener noreferrer"&gt;my earlier 51GB experiment&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Note on file size notation: the "48GB" figure here is 47.73GiB (bytes ÷ 1024³), rounded. macOS's own size display (SI units, ÷1000³) shows &lt;strong&gt;51.25GB&lt;/strong&gt;. Both refer to the same file (51,254,526,392 bytes).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Environment: 10-core Mac, 32GB RAM, external USB drive (measured physical throughput 0.41GB/s)&lt;/li&gt;
&lt;li&gt;Comparison target: klogg 24.11.0 (main search always uses the regex engine, Match case ON)&lt;/li&gt;
&lt;li&gt;Search hit counts were confirmed to match &lt;strong&gt;exactly across all patterns&lt;/strong&gt; among klogg, UwView, and UwView Pro (e.g., literal "Tokyo" = 10,967 hits)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Round 1: klogg vs. current UwView — nearly identical
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;klogg 24.11&lt;/th&gt;
&lt;th&gt;UwView (public release)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;First open (index build)&lt;/td&gt;
&lt;td&gt;About 110 seconds&lt;/td&gt;
&lt;td&gt;128–186 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Every subsequent open&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Every time&lt;/strong&gt;, about 110 seconds (re-indexes)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Every time&lt;/strong&gt;, 128–186 seconds (rebuilds)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search literal "Tokyo"&lt;/td&gt;
&lt;td&gt;120–135 seconds&lt;/td&gt;
&lt;td&gt;156.2 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There's some variance in the numbers, but it's clear that both tools are built on the same principle: "&lt;strong&gt;read the entire 48GB raw file, every single time&lt;/strong&gt;." Both hover around 0.3GB/s throughput — meaning both are &lt;strong&gt;pinned to the physical bandwidth ceiling of the disk&lt;/strong&gt;. That's not a matter of which tool is better; it's a matter of which design generation each belongs to.&lt;/p&gt;

&lt;p&gt;To be clear, I did not look at klogg's source code at all. This is an inference based purely on &lt;strong&gt;external measurements hitting the same physical ceiling&lt;/strong&gt;, but the underlying structure — rebuilding the index every time you open the file, and scanning the raw file every time you search — appears to belong to the same design generation.&lt;/p&gt;

&lt;p&gt;And current UwView's design originates from the old UwView of 30 years ago. The first discovery from this comparison: the industry-standard klogg performs on par with a 30-year-old design.&lt;/p&gt;

&lt;h3&gt;
  
  
  One point where it isn't even "on par"
&lt;/h3&gt;

&lt;p&gt;One feature the old UwView has had consistently since 30 years ago is that "&lt;strong&gt;the entire file is visible the moment you open it&lt;/strong&gt;" (progressive open). Current UwView also lets you jump freely to the middle or end of the file even while the index is still being built.&lt;/p&gt;

&lt;p&gt;What about klogg? During my measurements, I confirmed that &lt;strong&gt;only the beginning of the file is visible until index building finishes&lt;/strong&gt; (you cannot scroll to the middle or end). For a 48GB file, that's roughly 110 seconds during which the end of the file is simply off-limits. On this one point, klogg doesn't even match the 30-year-old design — it falls short of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Round 2: Enter UwView Pro — a design rebuilt for "now"
&lt;/h2&gt;

&lt;p&gt;What's changed between 30 years ago and today? RAM in the tens of gigabytes is now standard, CPUs commonly have 10 cores, and compression like zstd — "compression faster than the disk itself" — is now available. UwView Pro's engine was redesigned from the ground up around these assumptions.&lt;/p&gt;

&lt;p&gt;At the core is a &lt;strong&gt;sidecar approach&lt;/strong&gt;. Three key points:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;On the first open&lt;/strong&gt;, a zstd-compressed cache is generated at the same time the index is built (compression happens on otherwise-idle CPU cycles between disk reads, so it adds essentially zero extra wait time)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;From the second open onward&lt;/strong&gt;, only the saved index needs to be read (milliseconds). Searches read the &lt;strong&gt;5.3GB compressed cache&lt;/strong&gt; instead of the 48GB raw file (a 1/9 reduction in bytes read)&lt;/li&gt;
&lt;li&gt;The compressed cache preserves every byte of the original file losslessly, with block-level checksums. &lt;strong&gt;Even if you delete the original file and keep only the 1/9-sized cache, you can still open and search it directly&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Overall comparison table — measured results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;klogg 24.11&lt;/th&gt;
&lt;th&gt;UwView (public release)&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;UwView Pro (on sale)&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;Pro ÷ klogg&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;First open&lt;/td&gt;
&lt;td&gt;~110 s (&lt;strong&gt;only the beginning visible&lt;/strong&gt; until complete)&lt;/td&gt;
&lt;td&gt;128–186 s (entire file visible immediately)&lt;/td&gt;
&lt;td&gt;140 s (includes index + compressed cache; entire file visible immediately)&lt;/td&gt;
&lt;td&gt;About the same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Every subsequent open&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~110 s every time&lt;/td&gt;
&lt;td&gt;128–186 s every time&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.02–0.07 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1,500x or more&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search literal "Tokyo"&lt;/td&gt;
&lt;td&gt;120–135 s&lt;/td&gt;
&lt;td&gt;156.2 s&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;14.3 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;About 9x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search case-insensitive "Tokyo"&lt;/td&gt;
&lt;td&gt;~120 s&lt;/td&gt;
&lt;td&gt;(not measured)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;14.0 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;About 8.6x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search regex "Tok[yi]o"&lt;/td&gt;
&lt;td&gt;~130 s&lt;/td&gt;
&lt;td&gt;(not measured)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;29.8 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;About 4.4x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search regex "name:en.*Tokyo"&lt;/td&gt;
&lt;td&gt;~130 s&lt;/td&gt;
&lt;td&gt;(not measured)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;29.2 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;About 4.4x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Disk footprint (archival use)&lt;/td&gt;
&lt;td&gt;48GB (original required)&lt;/td&gt;
&lt;td&gt;48GB (original required)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;5.3GB&lt;/strong&gt; (original deletable; checksum-protected)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1/9&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  An honest note
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instant to &lt;em&gt;view&lt;/em&gt; from the very first open.&lt;/strong&gt; UwView lets you read, scroll and search the entire text the moment you open it (klogg shows only the head until indexing finishes). The index and compressed cache are &lt;strong&gt;built on the first open, in the background&lt;/strong&gt; (about 140 s for 48GB — bound by reading the raw file once at 0.41GB/s; you can browse while it runs). Because indexing happens on the first open, &lt;strong&gt;from the second open on it's instant, with line numbers&lt;/strong&gt; (0.02–0.07 s).&lt;/li&gt;
&lt;li&gt;All figures above are measurements from a single real-world environment. RAM capacity, storage speed, and file contents will all affect the numbers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Current status
&lt;/h2&gt;

&lt;p&gt;The engine (parallel index building, parallel search, and the sidecar mechanism) is fully implemented, and every figure above comes from measurements of working code. &lt;strong&gt;UwView Pro is on sale now&lt;/strong&gt; (Windows/macOS/Linux; one-time $129 or $9/month). → &lt;a href="https://uvp.y42u.net/en/pro-en/" rel="noopener noreferrer"&gt;https://uvp.y42u.net/en/pro-en/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Current UwView (free) remains available on &lt;a href="https://github.com/amru195704/UwView" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. Give the "entire file visible the moment you open it" experience a try — it's been a core part of UwView for 30 years.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Measured head-to-head, the industry-standard klogg and current UwView (built on a 30-year-old design) perform at roughly the same level — both belong to the "read the entire raw file every time" generation.&lt;/li&gt;
&lt;li&gt;On "the entire file is visible the moment you open it," klogg doesn't even match the 30-year-old UwView (only the head is visible until indexing completes).&lt;/li&gt;
&lt;li&gt;UwView Pro is a next-generation engine redesigned for today's hardware (abundant RAM, multi-core CPUs, compression faster than disk). Measured on 48GB / 892M lines: 1,500x+ for subsequent opens, ~9x for search, 1/9 the storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UwView Pro is on sale now&lt;/strong&gt; (Windows/macOS/Linux; one-time $129 or $9/month). → &lt;a href="https://uvp.y42u.net/en/pro-en/" rel="noopener noreferrer"&gt;https://uvp.y42u.net/en/pro-en/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Related articles
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-github-release-en/" rel="noopener noreferrer"&gt;UwView Released on GitHub — Renewing a Windows 95-Era Large-File Text Viewer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-osm-realdata-en/" rel="noopener noreferrer"&gt;I Opened a Real 51GB, 892,239,125-Line Dataset (OSM Japan) in UwView&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uvp.y42u.net/en/blog/uwview-theoretical-line-limit-en/" rel="noopener noreferrer"&gt;How Many Lines Can UwView Theoretically Open?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;amru195704/UwView (GitHub) &lt;a href="https://github.com/amru195704/UwView" rel="noopener noreferrer"&gt;https://github.com/amru195704/UwView&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;klogg (GitHub) &lt;a href="https://github.com/variar/klogg" rel="noopener noreferrer"&gt;https://github.com/variar/klogg&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OpenStreetMap data (Geofabrik: japan-latest.osm) &lt;a href="https://download.geofabrik.de/asia/japan.html" rel="noopener noreferrer"&gt;https://download.geofabrik.de/asia/japan.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Zstandard (zstd) &lt;a href="https://github.com/facebook/zstd" rel="noopener noreferrer"&gt;https://github.com/facebook/zstd&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;From the developer&lt;/strong&gt;: a list of my apps, Kindle books and open-source projects is on &lt;a href="https://github.com/amru195704" rel="noopener noreferrer"&gt;GitHub: amru195704&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
  </channel>
</rss>
