Это довольно сложный вопрос.
С одной стороны, (относительно) вычислительно дорого преобразовать число из двоичной в текстовую форму ... и обратно.Преобразование в десятичное число особенно дорого, потому что преобразования включают в себя повторное деление / умножение на 10.
С другой стороны, если значения данных (в среднем) малы, текстовое представление может (в среднем) занимают меньше байтов при кодировании.В зависимости от сквозной скорости и задержки в ваших сетях (включая сетевые адаптеры, виртуализация и т. Д.) Меньшее представление по проводам может привести к большей пропускной способности.
На третьемС другой стороны, это было бы спорным, если бы расходы на связь были незначительной частью общих вычислений.
Мой совет был бы:
- Остерегайтесь преждевременной оптимизации!
- Оцените две альтернативы (двоичную и текстовую) для кодирования + передачи + декодирования в вашей среде .Убедитесь, что вы делаете это с тестовыми данными, которые будут типичными для ваших фактических данных.
- Оцените приложение в целом.(Это предполагает, что вы обратили внимание на первый пункт!)
- Решите, будет ли разница в двоичном и текстовом представлении иметь значительную разницу с общей производительностьюзаполните заявку на реальных данных.
- Переработайте код ... если ваши измерения и т. д. скажут вам, что это будет стоить усилий.
Примечание: если измерение говорит вам, что разницамежду двоичным кодом и текстом на самом деле важно для вашего приложения, что может быть признаком того, что ваши вычисления тратят слишком много времени на общение по сравнению с вычислениями.Стоит посмотреть, сможете ли вы уменьшить сумму связи;например, изменяя детализацию вычислений или объем данных, которые перемещаются.
Наконец ...
При выполнении большого количества операций MapReduce,Мне бы хотелось, чтобы передаваемые данные имели как можно меньшие накладные расходы.
Это не должно быть вашей целью.В действительности цель должна быть:
- Сделать приложение в целом достаточно быстрым, чтобы соответствовать требованиям производительности.
- Оптимизировать Время разработки не пытаясь достичь производительности сверх фактических требований.
Цели типа «как можно быстрее» или «как можно более эффективно» или «как можно меньше»может быть опасное усилие тонет.Вы должны стараться избегать их.