<?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: Erkin Pardayev</title>
    <description>The latest articles on DEV Community by Erkin Pardayev (@erkinpardayev).</description>
    <link>https://dev.to/erkinpardayev</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%2F3404808%2Fd40c63ad-d80a-4eeb-96f2-14fd98911b38.png</url>
      <title>DEV Community: Erkin Pardayev</title>
      <link>https://dev.to/erkinpardayev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/erkinpardayev"/>
    <language>en</language>
    <item>
      <title>Opening a 50 GB text file without reading it</title>
      <dc:creator>Erkin Pardayev</dc:creator>
      <pubDate>Fri, 13 Nov 2026 04:29:23 +0000</pubDate>
      <link>https://dev.to/erkinpardayev/opening-a-50-gb-text-file-without-reading-it-13dk</link>
      <guid>https://dev.to/erkinpardayev/opening-a-50-gb-text-file-without-reading-it-13dk</guid>
      <description>&lt;p&gt;Most text editors open a file by reading all of it. That is fine for a source file and hopeless&lt;br&gt;
for a 50 GB log: the work done before the first screen grows with the file, and no processor&lt;br&gt;
saves you from that. BigText, a free and open-source editor for Windows, Linux and macOS, is&lt;br&gt;
built on the opposite rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The time and memory of every operation depend on the text on screen, not on the size of the&lt;br&gt;
file.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This article is about the five decisions that make that rule hold, what they measure at on a&lt;br&gt;
50 GB file, and what I learned building the editor with an AI model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhvbiryj1mt44ozwiyklb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhvbiryj1mt44ozwiyklb.gif" alt="BigText opens a 50 GB log at once, jumps to its end and its middle, searches it with a regular expression and follows a growing log" width="560" height="315"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;BigText opens a 50 GB log at once, jumps to its end and its middle, searches it with a regular expression and follows a growing log.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  A fast machine does not help
&lt;/h2&gt;

&lt;p&gt;All the numbers below come from one machine:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Part&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model&lt;/td&gt;
&lt;td&gt;HP Z2 Tower G1i Workstation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;Intel Core Ultra 9 285, 24 cores&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;192 GB DDR5-5600&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU&lt;/td&gt;
&lt;td&gt;NVIDIA GeForce RTX 5090&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Disks&lt;/td&gt;
&lt;td&gt;2 × 1 TB Samsung NVMe SSD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OS&lt;/td&gt;
&lt;td&gt;Windows 11 Pro&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On a machine like this everything should be instant, and for years opening a big log, CSV export&lt;br&gt;
or SQL dump was not. The editor would think for a long time, the window would freeze, sometimes&lt;br&gt;
it would refuse the file.&lt;/p&gt;

&lt;p&gt;The reason is simple. Notepad++ allocates a buffer for the whole file and warns above 2 GB that&lt;br&gt;
opening it may take minutes&lt;br&gt;
(&lt;a href="https://github.com/notepad-plus-plus/notepad-plus-plus/blob/master/PowerEditor/src/ScintillaComponent/Buffer.cpp" rel="noopener noreferrer"&gt;source&lt;/a&gt;).&lt;br&gt;
VS Code keeps roughly the size of the file in memory&lt;br&gt;
(&lt;a href="https://code.visualstudio.com/blogs/2018/03/23/text-buffer-reimplementation" rel="noopener noreferrer"&gt;VS Code blog&lt;/a&gt;).&lt;br&gt;
Reading a file from start to end and splitting it into lines is one sequential pass, usually on&lt;br&gt;
one thread: one of the 24 cores works and the rest wait. The GPU has nothing to do with it.&lt;/p&gt;

&lt;p&gt;That pass is easy to measure, because BigText makes it too, in the background, to build its line&lt;br&gt;
index. For the 50 GB file it takes 17–18 seconds on this machine, with the file already in the&lt;br&gt;
operating system's cache, that is, in RAM. An editor that makes this pass before it shows the&lt;br&gt;
first line keeps you waiting at least that long in the best case. If the file does not fit in&lt;br&gt;
memory, it does not open at all.&lt;/p&gt;

&lt;p&gt;The problem is not the hardware but the algorithm. If the work before the first screen is&lt;br&gt;
proportional to the file, no processor helps.&lt;/p&gt;
&lt;h2&gt;
  
  
  The idea: read what the screen needs
&lt;/h2&gt;

&lt;p&gt;A screen holds fifty or sixty lines, a few kilobytes of text. Showing the first screen of a 50 GB&lt;br&gt;
file does not require reading 50 GB. Five decisions follow from that.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. The file is mapped, not loaded, and in windows
&lt;/h3&gt;

&lt;p&gt;Memory mapping (&lt;code&gt;mmap&lt;/code&gt;, &lt;code&gt;MapViewOfFile&lt;/code&gt; on Windows) ties a file to the program's address space&lt;br&gt;
without reading anything. The actual read happens when the program touches a byte, and only for&lt;br&gt;
that page. Opening a file this way costs the same whatever its size.&lt;/p&gt;

&lt;p&gt;There was a surprise here. On Windows, mapping a 50 GB file as one view costs almost 100 MB of&lt;br&gt;
memory by itself: the system keeps 8 bytes of bookkeeping for every 4 KB page. Memory use&lt;br&gt;
depended on the file size again; with a 50 GB file open the process took 205 MB.&lt;/p&gt;

&lt;p&gt;So the single view became a cache of windows: 288 MB each, starting every 256 MB so that a line&lt;br&gt;
near a boundary always fits in one of them, with at most six mapped at a time. Memory dropped from&lt;br&gt;
205 MB to 107 MB and stopped depending on the file size.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Opening reads the first megabyte
&lt;/h3&gt;

&lt;p&gt;When a file opens, a worker thread reads its first megabyte. From that sample it decides the&lt;br&gt;
encoding (UTF-8, UTF-16, Windows-1251 and others), the line endings and whether the file is&lt;br&gt;
binary. That takes 1.1–1.4 ms. Then the lines that fit on the screen are drawn, and the file is&lt;br&gt;
open.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. The screen is anchored to a byte offset, not a line number
&lt;/h3&gt;

&lt;p&gt;An ordinary editor knows its position as "I am at line one million", and to know that it has to&lt;br&gt;
count every line before it. BigText knows "I am at byte 26,843,581,344". The scrollbar is&lt;br&gt;
proportional to bytes too. Jumping to the middle of the file counts nothing: it reads a few&lt;br&gt;
kilobytes there, finds the nearest line start and draws.&lt;/p&gt;

&lt;p&gt;The line number is shown at once anyway. At first it is an estimate with a &lt;code&gt;~&lt;/code&gt; in front of it;&lt;br&gt;
when the index reaches that part of the file, the exact number replaces it.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. A sparse line index: one number per 64 KB
&lt;/h3&gt;

&lt;p&gt;Storing where every line starts is expensive. My test file has 453,565,956 lines; a full table of&lt;br&gt;
offsets would take 3.4 GB. BigText splits the file into 64 KB blocks and stores one number per&lt;br&gt;
block: how many lines came before it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;file:   [ 64 KB ][ 64 KB ][ 64 KB ][ 64 KB ] ...   819 thousand blocks
index:     0        554     1,107    1,661   ...   lines before each block (example)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the 50 GB file the index is 8.12 MB, 0.016 % of the file. "Go to line N" finds the block by&lt;br&gt;
binary search and then scans at most 64 KB of text, counting newlines with SIMD.&lt;/p&gt;

&lt;p&gt;The index is built in the background from the start of the file, at about 2.9 GB/s: 17–18 seconds&lt;br&gt;
for 50 GB. The editor works normally meanwhile: scrolling, jumping and searching all work.&lt;/p&gt;
&lt;h3&gt;
  
  
  5. The UI thread never waits
&lt;/h3&gt;

&lt;p&gt;The UI thread reads only the bytes on screen. Indexing, search, replace and save run on worker&lt;br&gt;
threads, each with a progress bar and a cancel button. The goal is that no frame takes more than&lt;br&gt;
16 ms. While the 50 GB file was being indexed, a page-down frame took 1.2 ms on average.&lt;/p&gt;

&lt;p&gt;There is one more edge case. A file can be a single enormous line, such as a 2 GB minified JSON&lt;br&gt;
document. Such lines are split softly every 64 KB, so working out any line never reads more than&lt;br&gt;
128 KB.&lt;/p&gt;
&lt;h2&gt;
  
  
  Measurements
&lt;/h2&gt;

&lt;p&gt;The numbers come from a release build of BigText 0.4.1 and its own benchmark&lt;br&gt;
(&lt;code&gt;bigtext --bench-ui&lt;/code&gt;). Each file was measured three times, with the files in the OS cache.&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;1 GB&lt;/th&gt;
&lt;th&gt;10 GB&lt;/th&gt;
&lt;th&gt;50 GB&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Lines&lt;/td&gt;
&lt;td&gt;9,069,553&lt;/td&gt;
&lt;td&gt;90,713,192&lt;/td&gt;
&lt;td&gt;453,565,956&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open request → first screen of text painted&lt;/td&gt;
&lt;td&gt;31–32 ms&lt;/td&gt;
&lt;td&gt;31–32 ms&lt;/td&gt;
&lt;td&gt;31–35 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;of which opening the file and detecting the encoding&lt;/td&gt;
&lt;td&gt;1.3–1.4 ms&lt;/td&gt;
&lt;td&gt;1.3 ms&lt;/td&gt;
&lt;td&gt;1.3 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Background indexing&lt;/td&gt;
&lt;td&gt;0.4 s&lt;/td&gt;
&lt;td&gt;3.7 s&lt;/td&gt;
&lt;td&gt;17.4–17.7 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Index size&lt;/td&gt;
&lt;td&gt;130 KB&lt;/td&gt;
&lt;td&gt;2.03 MB&lt;/td&gt;
&lt;td&gt;8.12 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory of the idle editor&lt;/td&gt;
&lt;td&gt;98–99 MB&lt;/td&gt;
&lt;td&gt;100–101 MB&lt;/td&gt;
&lt;td&gt;107–109 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The important row is the second one: the file grew fifty times and the time to open did not&lt;br&gt;
change. Six more runs on the 50 GB file gave 35 ms at worst.&lt;/p&gt;

&lt;p&gt;Memory hardly changed either. Most of the 100 MB is the graphical interface itself: the core&lt;br&gt;
without a window holds the 50 GB file and its index in 12.1 MB.&lt;/p&gt;

&lt;p&gt;What the 30 ms means needs saying precisely. Opening the file and detecting the encoding take&lt;br&gt;
1.2 ms and laying out the first screen of text 0.03 ms; the rest is waiting for the window's next&lt;br&gt;
frames. The benchmark stops the clock when the editor has painted the text, which does not&lt;br&gt;
include the frame reaching the monitor, and it opens the file in the program's first frame.&lt;/p&gt;

&lt;p&gt;In a window that is already running there are two cases. With another file open, the 50 GB file&lt;br&gt;
opened in a new tab in 10 ms. The first file opened into an empty window took 0.1–0.2 s to show:&lt;br&gt;
the editor's own work is again a few milliseconds, and the rest is the GPU driver or the&lt;br&gt;
compositor presenting the first frame with a document in it. The cause of that one slow frame is&lt;br&gt;
not known yet; a second file in the same window paints in about 10 ms.&lt;/p&gt;

&lt;p&gt;Other numbers on the 50 GB file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Go to line&lt;/strong&gt; before the index was ready: no frame above 2.1 ms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plain-text search&lt;/strong&gt;: 4.0–4.3 GB/s, the whole file in 12 seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regular-expression search&lt;/strong&gt;: 3.6–4.3 GB/s.&lt;/li&gt;
&lt;/ul&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%2Fl68zma4ocfsjrn9asyqg.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%2Fl68zma4ocfsjrn9asyqg.png" alt="A regular expression found 830 matches in the 50 GB file in 15.5 seconds. The results list is under the text; a click jumps to a match." width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;A regular expression found 830 matches in the 50 GB file in 15.5 seconds. The results list is under the text; a click jumps to a match.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Editing and saving
&lt;/h2&gt;

&lt;p&gt;Viewing is half of it; big files also need editing. BigText uses a piece table, an old and proven&lt;br&gt;
structure. The original file is never touched. Typed text goes into a separate buffer, and the&lt;br&gt;
document is a list of pieces: "this part of the original, then this part of the buffer". A&lt;br&gt;
thousand edits in a 50 GB file take a few kilobytes.&lt;/p&gt;

&lt;p&gt;Saving streams the result into a temporary file in the same folder, flushes it to disk and only&lt;br&gt;
then replaces the original atomically (&lt;code&gt;ReplaceFileW&lt;/code&gt; on Windows, which keeps attributes and&lt;br&gt;
permissions). If something fails on the way or the power goes off, the original stays intact.&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%2F5b3l761z93g4xmnfsxmj.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%2F5b3l761z93g4xmnfsxmj.png" alt="The middle of the 50 GB file in hex view" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The 25th gigabyte of the same file in hex view. Jumping there is instant too.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  I built it with Claude
&lt;/h2&gt;

&lt;p&gt;I built BigText with Anthropic's Claude model, through Claude Code. Claude wrote the code. My&lt;br&gt;
part was to say precisely what was needed, check the result and choose the next step. Every one&lt;br&gt;
of the 174 commits in the repository names Claude as co-author.&lt;/p&gt;

&lt;p&gt;It started with one document: the goal of the program, eight architecture rules that must not be&lt;br&gt;
broken, measurable speed targets and a list of edge cases that must not break it. It is in the&lt;br&gt;
repository as &lt;code&gt;prompt.md&lt;/code&gt;. Four of its requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Never read the whole file into memory.&lt;/li&gt;
&lt;li&gt;Never block the UI thread; no task on it may take more than 16 ms.&lt;/li&gt;
&lt;li&gt;Do not use ready-made editor components: they all keep the whole document in memory.&lt;/li&gt;
&lt;li&gt;Measure the speed targets and report real numbers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Claude first wrote a plan (&lt;code&gt;PLAN.md&lt;/code&gt;), then worked through it in stages: opening and viewing,&lt;br&gt;
search, replace, editing and saving, encodings. After each stage it measured on the test files&lt;br&gt;
and compared the result with the target.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;24 October, 09:46&lt;/strong&gt;: the first commit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;24 October, 14:38&lt;/strong&gt;: version 0.1.0, five hours later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;29 October&lt;/strong&gt;: version 0.4.1, the one measured above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10–12 November&lt;/strong&gt;: versions 0.5.0 to 0.7.3.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Today the project has 151 Rust files, about 70,000 lines of code including tests, 335 tests and an&lt;br&gt;
in-app GUI self-test that drives the real window with synthetic mouse and keyboard input through&lt;br&gt;
229 checks.&lt;/p&gt;

&lt;p&gt;Four lessons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Make the goal measurable.&lt;/strong&gt; Not "it should be fast" but "the first screen in under 200 ms"
and "under 200 MB of memory with a 50 GB file open". A goal like that can be checked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write the architecture rules down first.&lt;/strong&gt; The decisions that mattered most were made before
any code was written.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measurement beats guessing.&lt;/strong&gt; Memory dropping from 205 MB to 107 MB was not in the plan; it
came out of a measurement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give the AI tests it can run itself.&lt;/strong&gt; When the GUI self-test was added, it found four bugs,
which were then fixed.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  What else it does
&lt;/h2&gt;

&lt;p&gt;Besides opening big files, BigText:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;searches with regular expressions, filters lines like &lt;code&gt;grep&lt;/code&gt; and replaces across the whole file;&lt;/li&gt;
&lt;li&gt;follows growing logs like &lt;code&gt;tail -F&lt;/code&gt;, jumps to a time, filters by level and opens logs on servers
over SSH;&lt;/li&gt;
&lt;li&gt;opens CSV and TSV as tables with sorting, statistics and pivots, and JSON with a structure view;&lt;/li&gt;
&lt;li&gt;compares two huge files;&lt;/li&gt;
&lt;li&gt;reads files inside &lt;code&gt;.gz&lt;/code&gt;, &lt;code&gt;.zst&lt;/code&gt;, &lt;code&gt;.zip&lt;/code&gt; and &lt;code&gt;.tar&lt;/code&gt; without unpacking them by hand;&lt;/li&gt;
&lt;li&gt;highlights code in about two dozen languages and formats, with a folder side bar and
go-to-file, for the files that are not huge.&lt;/li&gt;
&lt;/ul&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%2Fp2ju24s7is2cuvupl12h.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%2Fp2ju24s7is2cuvupl12h.png" alt="Comparing two logs" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Two logs compared: four differences in 425 thousand lines, found in 0.04 seconds.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Try it, or measure it yourself
&lt;/h2&gt;

&lt;p&gt;BigText runs on Windows, Linux and macOS. It is free and open source under the MIT license, and&lt;br&gt;
its interface is in eight languages. The test-file generator and the benchmark come with the&lt;br&gt;
portable downloads:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gen-testfiles --only random-lines-10g.txt
bigtext --bench-ui testdata/random-lines-10g.txt --report report.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The 50 GB file is the 10 GB one joined five times.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://erkinbek.github.io/bigtext/" rel="noopener noreferrer"&gt;https://erkinbek.github.io/bigtext/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Downloads: &lt;a href="https://github.com/Erkinbek/bigtext/releases/latest" rel="noopener noreferrer"&gt;https://github.com/Erkinbek/bigtext/releases/latest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source: &lt;a href="https://github.com/Erkinbek/bigtext" rel="noopener noreferrer"&gt;https://github.com/Erkinbek/bigtext&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have a file your editor cannot open, try it in BigText and tell me how it went.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A note on this article: like the code, it was written with Claude, from the project's notes and measurements. I checked it before publishing, and the replies in the comments are mine.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>claude</category>
      <category>tools</category>
      <category>rust</category>
    </item>
  </channel>
</rss>
