Why is cat faster than print

library(stringi)

microbenchmark::microbenchmark(
  cat = cat("asldkfjlajsdf", "asldkfjlajsdf", "asldkfjlajsdf"),
  print= print("asldkfjlajsdf"),
  paste = paste("asldkfjlajsdf", "asldkfjlajsdf", "asldkfjlajsdf"),
  paste0 = paste0("asldkfjlajsdf", "asldkfjlajsdf", "asldkfjlajsdf"),
  stri_c = stri_c("asldkfjlajsdf", "asldkfjlajsdf", "asldkfjlajsdf")
,times = 10000)

Unit: microseconds
   expr     min      lq       mean  median      uq      max neval
    cat 116.118 121.519 143.710490 125.300 130.700 5129.712 10000
  print  95.054 101.536 127.225742 109.097 116.118 5778.892 10000
  paste   2.160   3.241   5.012823   3.781   5.401  885.197 10000
 paste0   1.620   3.240   4.438318   3.780   4.861  166.886 10000
 stri_c   3.240   4.861   7.573830   6.481   7.561  184.169 10000

I understand stri is written in C++ it should be faster but why is cat faster than print

microbenchmark::microbenchmark(
  cat = cat("asldkfjlajsdf"),
  print= print("asldkfjlajsdf")
,times = 10000)

Unit: microseconds
  expr    min     lq     mean  median      uq       max neval
   cat 28.084 30.785  37.2250  32.405  35.105  1769.313 10000
 print 94.515 99.915 132.4082 106.397 112.337 89950.885 10000

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.