erlang各种有用的函数包括一些有用nif封装,还有一些性能测试case。
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

51 строка
1.1 KiB

3 лет назад
2 лет назад
3 лет назад
  1. -module(utSFwQueueDs).
  2. -compile([nowarn_unused_function, nowarn_unused_vars, nowarn_export_all]).
  3. -export([start/2]).
  4. start(Num, Pid) ->
  5. Ds = init(Num),
  6. Time1 = erlang:monotonic_time(),
  7. NewDsI = insert(Num, Ds),
  8. Time2 = erlang:monotonic_time(),
  9. NewDsR = read(Num, NewDsI),
  10. Time3 = erlang:monotonic_time(),
  11. NewDsU = update(Num, NewDsR),
  12. Time4 = erlang:monotonic_time(),
  13. NewDsF = for(Num, NewDsU),
  14. Time5 = erlang:monotonic_time(),
  15. delete(Num, NewDsF),
  16. Time6 = erlang:monotonic_time(),
  17. erlang:send(Pid, {over, self(), Time2 - Time1, Time3 - Time2, not_support, not_support, not_support, ets:info(test_fwQueue, memory) * erlang:system_info(wordsize)}),
  18. exit(normal).
  19. init(_Num) ->
  20. case fwQueue:new(test_fwQueue) of
  21. name_used ->
  22. fwQueue:clear(test_fwQueue);
  23. _ ->
  24. ok
  25. end.
  26. insert(0, Ds) ->
  27. Ds;
  28. insert(Num, _Ds) ->
  29. NewDs = fwQueue:in(test_fwQueue, Num),
  30. insert(Num - 1, NewDs).
  31. read(0, Ds) ->
  32. Ds;
  33. read(Num, Ds) ->
  34. Value = fwQueue:outF(test_fwQueue),
  35. read(Num - 1, Ds).
  36. update(Num, Ds) ->
  37. Ds.
  38. for(Num, Ds) ->
  39. Ds.
  40. delete(Num, Ds) ->
  41. Ds.