Есть класс генерации строки определенного форамата:
случайная дата за последние 5 лет || случайный набор 10 латинских символов || случайный набор 10 русских символов || случайное положительное четное целочисленное число в диапазоне от 1 до 100 000 000 || случайное положительное число с 8 знаками после запятой в диапазоне от 1 до 20
Пример вывода:
03.03.2015||ZAwRbpGUiK||мДМЮаНкуКД||14152932||7,87742021||
23.01.2015||vgHKThbgrP||ЛДКХысХшЗЦ||35085588||8,49822372||
17.10.2017||AuTVNvaGRB||мЧепрИецрА||34259646||17,7248118||
24.09.2014||ArIAASwOnE||ЧпЙМдШлыфУ||23252734||14,6239438||
16.10.2017||eUkiAhUWmZ||ЗэЖЫзЯШАэШ||27831190||8,10838026||
Класс:
class GenFile
{
public GenFile()
{
}
private Random gen = new Random();
private DateTime RandomDay()
{
DateTime start = new DateTime(2013, 1, 1);
int range = (DateTime.Today - start).Days;
return start.AddDays(gen.Next(range));
}
private string RandomString(string lang)
{
string data = null;
const string engChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
const string rusChars = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
if (lang == "eng")
{
data = new string(Enumerable.Repeat(engChars, 10)
.Select(s => s[gen.Next(s.Length)]).ToArray());
}
else if (lang == "rus")
{
data = new string(Enumerable.Repeat(rusChars, 10)
.Select(s => s[gen.Next(s.Length)]).ToArray());
}
return data;
}
private int RandomIntNumber()
{
int number;
int min = 1;
int max = 100000000;
return number = (2 * gen.Next(min / 2, max / 2));
}
private double RandomDoubleNumber()
{
int min = 1;
int max = 20;
var next = gen.NextDouble();
return min + (next * (max - min));
}
public override string ToString()
{
return (RandomDay().ToString("d") + "||" + RandomString("eng") + "||"
+ RandomString("rus") + "||" + RandomIntNumber() + "||"
+ RandomDoubleNumber().ToString("F8") + "||");
}
}
При создании через цикл 100 файлов и записи в них 100 000 этот процесс затягивается.
Как это делаю я (очень медленно):
GenFile genFile = new GenFile();
int i = 0;
while (i < 100)
{
int j = 0;
while (j < 100000)
{
File.AppendAllText(i + ".txt", genFile.ToString());
File.AppendAllText(i + ".txt", "\r\n");
j++;
}
i++;
}
Подскажите, а лучше покажите, как ускорить. С потоками никогда не работал. Пока не понимаю, как через потоки реализовать. И можно ли вообще.
Заранее спасибо.
StringBuilder sb = new StringBuilder();
int i = 0;
while (i < 100)
{
sb.Clear();
int j = 0;
while (j < 100000)
{
sb.Append(genFile.ToString());
sb.Append("\r\n");
j++;
}
File.AppendAllText(i + ".txt", sb.ToString());
i++; // потерял
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть две программы которые просто проверяют наличие процессов друг-друга методом SystemDiagnostics
Хотелось бы узнать, есть ли способ использовать библиотеку LuaJIT в программе, написанной на C# по аналогии с C/C++Т