ffi_strlen.nut 979 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. local l = ffi.load("libc.so.6")
  2. local strlen = l.bind_func("i", "strlen", ["s"]);
  3. local str = "Hello World !";
  4. print(str, str.len(), strlen(str));
  5. local function mystrlen(str)
  6. {
  7. return str.len();
  8. }
  9. local function mystrlen2(str)
  10. {
  11. local result = 0;
  12. for(local len=str.len(); result < len; ++result);
  13. return result;
  14. }
  15. const MAX_COUNT = 5000000;
  16. local str_len = 0;
  17. local start_time = os.clock();
  18. for(local i=0; i < MAX_COUNT; ++i)
  19. {
  20. str_len = str.len();
  21. }
  22. print(MAX_COUNT, str_len, os.clock() - start_time);
  23. start_time = os.clock();
  24. for(local i=0; i < MAX_COUNT; ++i)
  25. {
  26. str_len = strlen(str);
  27. }
  28. print(MAX_COUNT, str_len, os.clock() - start_time);
  29. start_time = os.clock();
  30. for(local i=0; i < MAX_COUNT; ++i)
  31. {
  32. str_len = mystrlen(str);
  33. }
  34. print(MAX_COUNT, str_len, os.clock() - start_time);
  35. start_time = os.clock();
  36. for(local i=0; i < MAX_COUNT; ++i)
  37. {
  38. str_len = mystrlen2(str);
  39. }
  40. print(MAX_COUNT, str_len, os.clock() - start_time);