这题目太标题党了,最近啃了半部《C++ Primer Plus》,除了书中习题,就没其它写过C++程序,下午读了Rcpp的文档,把mlass包里kMeans算法的核心部分用c++重新写了。
C++果然给力,速度提高不是一点两点。
> require(mlass)
> data(iris)
> x=iris[,-5]
> res = benchmark(kMeans(x, 3, lang="CPP"),
+ kMeans(x, 3, lang="R"),
+ columns=c("test", "replications", "elapsed",
+ "relative", "user.self", "sys.self"))
> res
test replications elapsed relative user.self sys.self
1 kMeans(x, 3, lang = "CPP") 100 0.176 1.00000 0.173 0.003
2 kMeans(x, 3, lang = "R") 100 11.343 64.44886 11.293 0.015