Вопрос по windows, .net, c# – Как я могу быстро создавать большие (> 1 ГБ) текстовые + двоичные файлы с «естественным» содержимым? (С #)

7

Error: User Rate Limit Exceeded

The content of the files should be neither completely random nor uniform.
A binary file with all zeros is no good. A binary file with totally random data is also not good. For text, a file with totally random sequences of ASCII is not good - the text files should have patterns and frequencies that simulate natural language, or source code (XML, C#, etc). Pseudo-real text. The size of each individual file is not critical, but for the set of files, I need the total to be ~8gb. I'd like to keep the number of files at a manageable level, let's say o(10).

Error: User Rate Limit Exceeded

Int64 bytesRemaining = size;
byte[] buffer = new byte[sz];
using (Stream fileStream = new FileStream(Filename, FileMode.Create, FileAccess.Write))
{
    while (bytesRemaining > 0)
    {
        int sizeOfChunkToWrite = (bytesRemaining > buffer.Length) ? buffer.Length : (int)bytesRemaining;
        if (!zeroes) _rnd.NextBytes(buffer);
        fileStream.Write(buffer, 0, sizeOfChunkToWrite);
        bytesRemaining -= sizeOfChunkToWrite;
    }
    fileStream.Close();
}

Error: User Rate Limit Exceeded

Error: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

EDITError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded Sam Saffron
Error: User Rate Limit Exceeded Cheeso
Error: User Rate Limit Exceeded Kiquenet
Error: User Rate Limit Exceededdotnetzip.codeplex.com/SourceControl/changeset/view/… Cheeso

Ваш Ответ

8   ответов
3

1

1

1

Цепи Маркова, безусловно, правильный путь для этого. Они будут производить как высококачественную продукцию, так и делатьvery быстро.
Я выбрал этот подход, выбрав отдельные слова из Lorem Ipsum, но генерировать большие текстовые файлы таким образом было невероятно медленно. Цепной подход Маркова выглядит так, будто он наклонен к строгой «естественности». текста, который для меня менее важен, чем скорость генерации. Cheeso
4

.

хорошо, я буду исследовать. Это интересно, 8 Гб данныхused to be Огромный, но в наши дни с хранилищами истории веб-трафика, обычными многотабайтными дисковыми массивами, S3 и т. д., 8 Гб уже не так уж велики. Cheeso
Правда. на цепях Маркова - я не думаю, что хочу написать новую реализацию. Импл я нашел,blog.figmentengine.com/2008/10/markov-chain-code.htmlДала очень хороший выходной, но былаvery медленный. Cheeso
Да, это, вероятно, правда. Тем не менее, с точки зрения времени вычислений и ввода-вывода, это важно даже в наши дни.
@Chesso: похоже, что накладные расходы для этого связанного кода связаны с использованием IEnumerable & lt; T & gt; и очереди, которыеare будет довольно значительным. Если вы пишете потоковый подход, производительность должна быть очень хорошей.
Да, это именно то, что я нашел. Гораздо быстрее. Cheeso
10

UPDATEwouldif

И вы можете скачать изображения тоже.
Я также очень удивлен всеми этими возражениями, это была действительно шутка.
Я сомневаюсь, что многопоточность увеличит пропускную способность так много ...;)
Таким образом, вы, вероятно, получите наиболее «естественный» данные.
Это хороший подход для получения "естественного" текст, но если мне нужно будет загрузить 8 ГБ веб-страниц, это будет медленнее, чем у меня сейчас. Мне нравится идея, хотя. Cheeso
0

To generate text, I start with a few text files from the project gutenberg catalog, as suggested by Mark Rushakoff. I randomly select and download one document of that subset. I then apply a Markov Process, as suggested by Noldorin, using that downloaded text as input. I wrote a new Markov Chain in C# using Pike's economical Perl implementation as an example. It generates a text one word at a time. For efficiency, rather than use the pure Markov Chain to generate 1gb of text one word at a time, the code generates a random text of ~1mb and then repeatedly takes random segments of that and globs them together.

UPDATEFILE

14

Edit

.

Существует уже тест на сжатие, который использует часть дампа Википедии:cs.fit.edu/~mmahoney/compression/textdata.html
@ Марк, хорошая мысль, я добавлю ссылку, спасибо!
Я собирался упомянуть, что смотрю в Project Gutenberg. Большинство текстовых файлов уже сжаты, поэтому их быстрая загрузка.gutenberg.org/catalog

Похожие вопросы