public unsafe ulong SimdJsonNUtf8(byte[] data, string fileName, string fileSize) { ulong wordsCount = 0; fixed(byte *dataPtr = data) { using (ParsedJsonN doc = SimdJsonN.ParseJson(dataPtr, data.Length)) using (var iterator = new ParsedJsonIteratorN(doc)) { while (iterator.MoveForward()) { if (iterator.IsString()) { if (*iterator.GetUtf8String() == (byte)'a') { wordsCount++; } } } } } return(wordsCount); }
public unsafe ulong SimdJsonNUtf16(byte[] data, string fileName, string fileSize) { ulong wordsCount = 0; fixed(byte *dataPtr = data) { using (ParsedJsonN doc = SimdJsonN.ParseJson(dataPtr, data.Length)) using (var iterator = new ParsedJsonIteratorN(doc)) { while (iterator.MoveForward()) { if (iterator.IsString()) { if (iterator.GetUtf16String().StartsWith('a')) // UTF16 in SimdJsonN is expected to be slow for now (see https://github.com/lemire/simdjson/pull/101) { wordsCount++; } } } } } return(wordsCount); }