erlang各种有用的函数包括一些有用nif封装,还有一些性能测试case。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
986 B

3 years ago
3 years ago
  1. -module(utSEnlfqDs).
  2. -compile([nowarn_unused_function, nowarn_unused_vars, nowarn_export_all]).
  3. -compile([export_all]).
  4. -export([start/2]).
  5. start(Num, Pid) ->
  6. Ds = init(Num),
  7. Time1 = erlang:monotonic_time(),
  8. NewDsI = insert(Num, Ds),
  9. Time2 = erlang:monotonic_time(),
  10. NewDsR = read(Num, NewDsI),
  11. Time3 = erlang:monotonic_time(),
  12. NewDsU = update(Num, NewDsR),
  13. Time4 = erlang:monotonic_time(),
  14. NewDsF = for(Num, NewDsU),
  15. Time5 = erlang:monotonic_time(),
  16. delete(Num, NewDsF),
  17. Time6 = erlang:monotonic_time(),
  18. erlang:send(Pid, {over, self(), Time2 - Time1, Time3 - Time2, not_support, not_support, not_support, no_size}),
  19. exit(normal).
  20. init(_Num) ->
  21. {ok, Ds} = enlfq:new(),
  22. Ds.
  23. insert(0, Ds) ->
  24. Ds;
  25. insert(Num, Ds) ->
  26. enlfq:push(Ds, Num),
  27. insert(Num - 1, Ds).
  28. read(0, Ds) ->
  29. Ds;
  30. read(Num, Ds) ->
  31. Value = enlfq:pop(Ds),
  32. read(Num - 1, Ds).
  33. update(Num, Ds) ->
  34. Ds.
  35. for(Num, Ds) ->
  36. Ds.
  37. delete(Num, Ds) ->
  38. Ds.