Проблема с 'ping файла' состоит в том, что Вы оценили бы http ответ сервера, тогда как Ваш целевой ресурс для игр, которым Вы служите, может иметь совсем другое поведение и таким образом другую задержку.
Просто идея внезапно, возможно, даже нереалистичный в зависимости от фактического контекста: но, не был бы это быть интересным сделать сценарий сервера на основе короткой последовательности задач обычно выполняемым серверами во время геймплея (например, открытие соединения RTMP, получая информацию, передавая его обратно). В зависимости от общего количества серверов Вы могли, почти открывая их одновременно и определять первый ответ как победителя (вычитающий время, которого Ваш клиент требует независимо для обработки каждого запроса).
, Конечно, это - довольно дорогой разговор стороны сервера метода, но по крайней мере Вы, надо надеяться, получили бы надежный результат (сервер и сетевые задержки, которым подводят итог). Даже если бы это берет пару секунд для оценки, это было бы вопросом части общего приятного геймплея.
Основная причина в том, что если вы занимаетесь как универсальным программированием, так и численными вычислениями, полезно иметь большой набор доступных двоичных операторов. Например, если вы храните числа в двумерных массивах, вы можете захотеть умножить массивы поэлементно или вы можете захотеть вычислить матричное произведение двух массивов. В Matlab этими двумя операторами являются . *
и *
; в R это *
и % *%
. Python сопротивлялся попыткам добавить новые операторы, и поэтому numpy различает эти два вида продуктов наличием двух классов: класс массива умножается поэлементно, класс матрицы - умножается в смысле линейной алгебры.
Другой пример из Python - это то, что для списков плюс означает конкатенацию: [1,2,3] + [4,5] == [1,2,3,4,5]
. Но для массивов numpy плюс означает поэлементное сложение: массив ([1,2]) + массив ([4,5]) == массив ([5,7])
. Если ваш код должен делать и то, и другое, вы должны выполнять преобразование между классами или использовать нотацию функций, что может привести к громоздкому на вид коду, особенно там, где задействована математика.
Поэтому иногда было бы удобно иметь больше операторов, доступных для использования , и вы можете не знать заранее, какие операторы используются в конкретном приложении. Поэтому разработчики R решили рассматривать как операторы все, что называется % foo%
, и существует несколько примеров: % в%
установлено членство, % x%
- продукт Кронекера, % o%
- внешний продукт. В качестве примера языка, который довел это до крайности, см. Fortress (раздел 16 спецификации начинается с правил для имен операторов).
В упомянутом вами сообщении в блоге автор является с использованием графического пакета ggplot2 , который определяет % +%
как некую комбинацию двух элементов графика. На самом деле кажется, что он добавляет метод к голому +
(который является общей функцией, поэтому вы можете определить, что он означает для определяемых пользователем объектов), но он также определяет % +%
так что вы можете использовать ggplot2 значение +
(что бы это ни было) для других объектов. Если вы устанавливаете ggplot2, введите require (ggplot2)
и ? `% +%`
, чтобы увидеть документацию по этому оператору,
Не существует общепринятого % +%
. Возможно, вы смотрели этот вчерашний вопрос , где были определены
R> '%+%' <- paste
R> "foo" %+% "bar"
[1] "foo bar"
R>
и специальная функция конкатенации строк. Как правило, синтаксис «процент-оператор-процент» открыт для пользовательских функций с двумя аргументами, но (AFAIK) нет общепринятой версии для % +%
, которую можно ожидать повсюду. .
На основании моего беглого взгляда на руководство это может быть определяемый пользователем инфиксный оператор, поэтому трудно сказать, каков фактический смысл ...
Я бы подумал о двоичном сложении.