Первоначально доменная часть веб-адреса была полностью ASCII (поэтому без диакритических знаков, без смайликов, без китайских иероглифов). Это было расширено давным-давно благодаря тому, что называется интернационализированным доменным именем (IDN). Сегодня теоретически вы можете…
Рубрика: Daniel Lemire’s blog
Транскодирование Unicode с помощью AVX-512: AMD Zen 4 против Intel Ice Lake
Большинство современных систем полагаются на строки Unicode. Однако у нас есть два популярных формата Unicode: UTF-8 и UTF-16. Нам часто нужно конвертировать из одного формата в другой. Например, у вас может быть…
Смайлики в доменных именах, punycode и производительность
Большинство доменных имен закодированы с использованием ASCII (например, yahoo.com). Однако вы можете зарегистрировать доменные имена практически с любым символом в них. Например, есть веб-сайт по адресу .ла называется poopla. Тем не менее,…
Быстрая проверка того, что строка принадлежит небольшому набору
Предположим, я даю вам набор ссылочных строк («ftp», «file», «http», «https», «ws», «wss»). Получив новую строку, вы хотите быстро определить, является ли она частью этого набора. Разумным решением могло бы быть создание…
Связи науки и техники (25 декабря 2022 г.)
Одно из предприятий Илона Маска, OpenAI, обнародовало новый инструмент под названием ChatGPT. Это широко рассматривается как практический прорыв в области искусственного интеллекта . Учитывая вопрос, он может дать связный ответ длиной в…
Реализация strlen с использованием SVE
В C длина строки отмечается нулевым байтом в конце строки. Таким образом, чтобы определить длину строки, нужно просмотреть ее, ища 0 байт. Последние процессоры ARM имеют мощный набор инструкций (SVE), который хорошо…
Проверка на отсутствие строки, наивная редакция AVX-512
Предположим, вы хотите проверить, что строка отсутствует в большом документе. В C вы можете сделать следующее, используя стандартную функцию strstr : bool is_present = strstr ( мой документ , игла ) ;…
Каково использование памяти небольшим массивом в С++?
В более ранней записи в блоге я сообщил, что использование памяти для небольшого массива байтов в Java (например, массива, содержащего 4 байта) составляет около 24 байтов. Другими словами: выделение небольших блоков памяти…
Связи науки и техники (11 декабря 2022 г.)
Сосредоточив внимание на некоторых видах досадной дискриминации (раса, пол), мы можем перестать видеть другие виды дискриминации . Например, склонны дискриминировать некрасивых людей, невысоких мужчин, стариков и так далее. Жизнь могла возникнуть на…
Современное векторное программирование с замаскированными загрузками и хранилищами
Когда вы запускаете программу, она создает «процесс», который владеет своей памятью. Память выделяется программному процессу блоками, называемыми «страницами». Эти страницы могут иметь размер 4 КБ, 16 КБ или более. Для данного процесса…