Я только нашел что один здесь . Это не закончено - но возможно начальная точка... И в то время как Вы в нем, Вы могли бы хотеть попробовать этот lib с Jiras Xml-Rpc. Возможно, бедные укомплектовывают Visual Studio, которую Pluign не все это трудное записать?!
карта
используется здесь для выполнения функции
T0 = now(), % start timer
[ G() || _ <- NN ], % make N calls to F
1.0e-6*timer:now_diff(now(), T0)/N % average time per call
для каждого элемента MM
. map
вернет новый список того же размера, где каждый элемент нового списка является результатом применения вышеуказанной функции к соответствующему элементу MM
.
Вы можете invoke time_it
, например:
moduleName:time_it(fun moduleName:dummy/1, 10, 100).
Если у вас есть функция moduleName: dummy / 1, вы можете выполнить одно из следующих действий
time_it / 3
, то вызовите ] F (параметр-константа)
вместо F ()
. Я предполагаю, что это так. M1: time_it (fun () -> M2: dummy (constant_parameter) end, N, M)
.
dummy не будет вызываться напрямую, а только F внутри time_it. Определяет ли стандарт HTTP или что-то еще, какая кодировка должна использоваться для специальных символов, прежде чем они будут закодированы в URL-адресе с помощью% XXs?
Стандарт HTTP, нет. Но другой стандарт, IRI, может вступить в игру.
URI представляют собой явно (однократно% -декодированные) байтовые последовательности. На какие символы Unicode отображаются эти байты, не указано ни в стандарте URI, ни в стандарте HTTP для http: -scheme URI.
В частности, для параметров запроса: веб-браузеры будут использовать кодировку исходной страницы для отправки формы GET URL , поэтому, если у вас есть страница в ISO-8859-1 и вы поместите 'é' в поле поиска, вы получите '? search =% E9', но если вы сделаете то же самое на странице, закодированной как UTF-8, вы получится? search =% C3% E9. Если вы не обслуживаете свою страницу формы с какой-либо конкретной кодировкой, браузер угадает, чего вы не делаете. Я не хочу, так как из-за этого будет невозможно угадать, в каком формате будет отправлено сообщение.
Для других частей URL-адреса браузер не будет генерировать их сам, но если вы предоставите его без Символы ASCII в ссылках обычно кодируются как UTF-8. Это ненадежно, так как зависит от настроек браузера и локали, поэтому на данный момент лучше не использовать его.
Стандарт, который правильно разрешает использование не-ASCII символов в ссылках, - это IRI . IRI преобразуется в URI по UTF-8 -% - кодируя большую часть URL, но вместо этого имя хоста преобразуется с использованием Punycode . Для совместимости лучше пока не полагаться на то, что браузеры понимают IRI в ссылках. Вместо этого UTF-8-затем -% - кодирует ваш путь и символы параметров самостоятельно. В современных браузерах они по-прежнему будут отображаться как правильные символы в адресной строке;
Назначение lists: map
в функции time_it
- просто запустить внутренняя функция M раз. Когда вы видите этот шаблон:
L = lists:seq(1,M),
lists:map(fun(_)-> Foo() end, L)
Это просто означает вызов Foo ()
снова и снова M раз и возврат результатов каждого вызова в списке. Фактически он составляет список целых чисел [1,2,3, ... N]
, а затем вызывает Foo ()
один раз для каждого члена списка.
Автор time_it
снова проделывает тот же трюк, потому что time_it
необходимо вызвать функцию, которую вы ему передали, N * M раз. Итак, внутри внешнего цикла, который выполняется M раз, они используют другую технику для выполнения внутреннего цикла N раз:
L = lists:seq(1,N),
[Foo() || _ <- L]
Это дает точно такой же результат, что и код выше, но на этот раз Foo
вызывается N раз .
Причина, по которой у вас возникли проблемы с использованием time_it
с вашей фиктивной функцией, заключается в том, что time_it
принимает функцию с 0 параметрами, а не с 1. Поэтому вам нужно создать фиктивную функцию и назовите это так:
dummy() ->
%% do something here you want to measure
ok.
measure_dummy() ->
time_it(fun someModule:dummy/0, 10, 100).