#string #memory
#строка #память
Вопрос:
140 символов. Сколько памяти это займет?
Я пытаюсь подсчитать, сколько твитов может вместить мой большой экземпляр EC2 Mongo DB.
Ответ №1:
Twitter использует сообщения в кодировке UTF-8.
Кодовые точки UTF-8 могут иметь длину до шести в четыре октета, что делает максимальный размер сообщения 140 x 4 = 560 8-битных байт.
Это, конечно, только для необработанных сообщений, исключая затраты на хранение, индексацию и другие дополнения, связанные с хранением.
e: Twitter успешно разрешил мне опубликовать сообщение:
™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™
Да, это 140 символов торговой марки, каждый из которых имеет три октета в формате UTF-8
Комментарии:
1. UTF-8 кодирует кодовые точки, а не глифы. Каждая кодовая точка может содержать до 4 октетов в UTF-8, UTF-16 и UTF-32. Кодировка CESU-8 может использовать 6 октетов для одной кодовой точки, но это происходит только из наивного кодирования UTF-16 в UTF-8 и фактически не является допустимым UTF-8.
2. Терминология и математика обновлены, спасибо за разъяснение.
3. Стоит отметить, что каждый твит не состоит из 140 символов, и что по мере того, как пользовательская база Twitter становится все более интернациональной (или нет), большие кодовые точки будут использоваться чаще (или реже).
4. Хотя это верно, вопрос касается размера в контексте определения требований к хранилищу, поэтому правильнее думать о максимальном размере, а не о среднем размере.
Ответ №2:
Еще в сентябре инженер Twitter провел презентацию, в которой предположил, что на твит приходится около 200 байт.
Конечно, вам все равно придется учитывать накладные расходы для ваших собственных метаданных и самой базы данных, но 200 байт / запись, вероятно, хорошее место для начала.
Комментарии:
1. Twitter использует кодировку Unicode в формате UTF-8 — 140 символов не будут означать 140 байт, если вы не ограничиваете все возможные сообщения нижним диапазоном 127 ASCII.
2. @Charles: mail-archive.com/twitter-development-talk@googlegroups.com / … говорит, что это просто количество байтов. Изменилось ли что-нибудь с тех пор?
3. в их текущих документах API говорится, что они подсчитывают кодовые точки, но не устанавливают верхнюю границу размера байта. Судя по некоторой путанице в этой теме списка рассылки, я ожидаю, что документ API новее, чем обсуждение там.
Ответ №3:
Обычно это два байта на символ, если вы храните Unicode как UTF-8, так что это будет означать максимум 280 байт на твит.
Комментарии:
1. Символы UTF-8 могут иметь размер более двух октетов. Например, символ торговой марки имеет длину в три октета. Википедия предполагает, что максимально возможный размер составляет шесть (!!!) октетов.
Ответ №4:
Вероятно, 284 байта в памяти (префикс длины 4 байта длина * 2). Внутри БД я не могу сказать, но, вероятно, 280, если БД имеет формат UTF-8, вы могли бы добавить несколько байт служебных данных для метаданных и т.д.
Ответ №5:
Потенциально представляет интерес:
http://mehack.com/map-of-a-twitter-status-object
Анатомия объекта статуса Twitter
Также подробнее о кодировке символов Twitter:
http://dev.twitter.com/pages/counting_characters
Комментарии:
1. в настоящее время -> developer.twitter.com/en/docs/counting-characters
Ответ №6:
Технически он хранится в формате UTF-8, а на самом деле это слайд-дека от здешнего твиттераhttp://www.slideshare.net/raffikrikorian/twitter-by-the-numbers дает реальную статистику об этом:
140 символов, ~ 200 байт