public class App
{
private List<NormativeDocument> _normDocs;
private HashSet<Guid> _normDocIds;
// private List<Guid> _normDocIds; // замучаетесь ждать, даже на 200 000 тысячах, а на 18 миллионах можете брать 2 отгула
private void OnDocumentParsed(object sender, NormativeDocumentEventArgs args)
{
if (!_normDocIds.Contains(args.Document.NormDocId))
{
_normDocIds.Add(args.Document.NormDocId);
_normDocs.Add(args.Document);
}
if (_normDocs.Count % 10000 != 0) return;
InsertDocument();
var now = DateTime.Now;
var top = Console.CursorTop;
Console.SetCursorPosition(0, top - 1);
Console.WriteLine($"{(now - _start).TotalSeconds:N1} s. Process: {(args.Count + 1):N0}");
}
}
какая вообще связь между стрингбилдером и сложностью алгоритма?
[Fact]
public void SbVsConcatTest()
{
const int size = 60 * 1000;
var s = string.Empty;
var concatStart = DateTime.Now;
for (var i = 0; i < size; i++) s += i;
var concatEnd = DateTime.Now;
var sb = new StringBuilder();
var sbStart = DateTime.Now;
for (var i = 0; i < size; i++) sb.Append(i);
var sbEnd = DateTime.Now;
Debug.WriteLine($"concat: {(concatEnd - concatStart).TotalMilliseconds}");
Debug.WriteLine($"sb: {(sbEnd - sbStart).TotalMilliseconds}");
}