Guest User

Untitled

a guest
Dec 4th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. fizzBuzz = function(range, x, y){
  2. for (i in seq(1, range, by=1)){
  3. if (i %% x == 0 & i %% y == 0){
  4. print('FizzBuzz')
  5. }
  6. else if (i %% y ==0){
  7. print('Buzz')
  8. }
  9. else if (i %% x == 0){
  10. print('Fizz')
  11. }
  12. else{
  13. print(i)
  14. }
  15. }
  16. }
  17. fizzBuzz(100, 3, 5)
  18.  
  19. # Run this once to install benchmark suite:
  20. #install.packages(c("microbenchmark", "stringr"), dependencies = TRUE)
  21. require(microbenchmark)
  22. library(parallel)
  23.  
  24. # Setup parallelization particulars.
  25. cores <- detectCores()
  26. cluster <- makeCluster(cores)
  27.  
  28. gerardFizzBuzz <- function(i) {
  29. fizz <- i %% 3
  30. buzz <- i %% 5
  31.  
  32. if (fizz == 0 & buzz == 0) {
  33. return('FizzBuzz')
  34. }
  35. else if (buzz == 0) {
  36. return('Buzz')
  37. }
  38. else if (fizz == 0) {
  39. return('Fizz')
  40. }
  41.  
  42. return(i)
  43. }
  44.  
  45. applyFizzBuzz <- function(range) {
  46. return(lapply(1:range, gerardFizzBuzz))
  47. }
  48.  
  49. parallelFizzBuzz <- function(range) {
  50. return(parLapply(cluster, 1:range, gerardFizzBuzz))
  51. }
  52.  
  53. vectorizedFizzBuzz <- function(range) {
  54. v <- Vectorize(gerardFizzBuzz)
  55. return(v(1:range))
  56. }
  57.  
  58. papasmurfFizzBuzz <- function (range) {
  59. res <- seq(1, range)
  60.  
  61. for (i in res){
  62. if (i %% 3 == 0 & i %% 5 == 0){
  63. res[i] <- 'FizzBuzz'
  64. }
  65. else if (i %% 5 ==0){
  66. res[i] <- 'Buzz'
  67. }
  68. else if (i %% 3 == 0){
  69. res[i] <- 'Fizz'
  70. }
  71. else{
  72. res[i] <- i
  73. }
  74. }
  75.  
  76. return(res)
  77. }
  78.  
  79. range <- 100000;
  80.  
  81. perf <- microbenchmark(applyFizzBuzz(range), vectorizedFizzBuzz(range), parallelFizzBuzz(range), papasmurfFizzBuzz(range), times=20)
  82.  
  83. # note the log scale.
  84. boxplot(perf, names = c("lapply", "Vectorized", "parLapply", "forloop"))
  85.  
  86. stopCluster(cluster)
Add Comment
Please, Sign In to add comment