データのお砂場(90) R言語、benchmark64.data、bit64パッケージ

Joseph Halfmoon

前回、R言語の中にあって各種サンプルデータセットを提供してくれているdatasetsパッケージに含まれているデータセットをついに舐め終わりました(身についているのかは怪しいケド。)今回からは他のパッケージに含まれているサンプルデータセットを眺めていきたいと思います。最初はbit64パッケージとな。

※「データのお砂場」投稿順Indexはこちら

datasetsパッケージは、サンプルデータセットを専門に集めたパッケージでしたが、各種機能を提供するパッケージの中にもチラホラとサンプルデータセットが含まれているようです。当然、該当のパッケージ機能を動かしてみたりするためのものだと思われます。つまり、サンプルデータセットが何かを調べるだけではなく、まずパッケージ機能が何なのかも調べにゃ分からんということですな。メンドイ。

bit64パッケージ

CRAN(Comprehensive R Archive Network)内のbit64説明ページが以下に。

bit64: A S3 Class for Vectors of 64bit Integers

64ビット幅の整数ベクトル型のクラス(S3形式)のパッケージみたいです。githubのページが以下に。

truecluster / bit64

また使用方法などは、以下にURLを掲げたPDFマニュアル(75ページもある)に詳しいです。

https://cran.r-project.org/web/packages/bit64/bit64.pdf

bit64パッケージの使用開始

RStudioを使わせていただいております。Packageタブからbit64をチェックすれば使用開始できます(依存関係のあるbitなどのパッケージも同時にチェックされます。)packageInstall
コンソールを見てみると、以下のようにlibraryコマンドが走ります。ずらずらと出力でてきますが、その上の方をみると、標準のパッケージから置き換えられてしまう機能もあるみたいです。libraryBit64
bit64パッケージの使い方、PDF読むのが辛いのでよくわかりません。とりあえず3要素の64ビット幅整数のベクトルを作って、その第1要素に幅広の整数を代入してみます。こんな感じ。integer64sample
いいんかな~。

benchmark64.data サンプルデータセット

さて、ターゲットのサンプルデータセットは以下のお名前です。

benchmark64.data

これは bit64パッケージ内に、benchmark64というベンチマークを行うための関数が含まれており、その関数を以下の特定のPC上で実行したときに取得したデータセットみたいです。

Lenovo ThinkPad T410 Core i5 560M/2.66GHz/2コア

調べてみると2010年発売のノートPC(Windows 7機)なのでかなり古い機種です。ま、数十年も前のサンプルデータ主体だったdatasetsパッケージに比べればずっと最近のデータとも言えますが。

なお、benchmark64関数は、与えるパラメータによって大きく負荷が変わるみたいです。負荷が軽いと一瞬で終わってしまって計測できないし、負荷が重すぎると時間がかかりすぎることもあるっと。

その辺 helpシステムにお願いすると以下のような感じで説明を取得できます。

benchmark64data

まずは生データ

まずは生データを眺めてみます。縦横2次元の数値ベクトルのようです。rawData_benchmark64data

 

行ごとにベンチマーク対象の個別処理名がならび、列毎に実行条件がならんでおるようです。列名をみるとナンタラchacheみたいなお名前ならんでいますが、それらは全て bit64パッケージが提供するデータ構造みたいです。

Examples

上記のHelpファイルを読めば実行結果も見ることができます。まずは生データ。これは上の表と一緒ね。benchmark64print

続いて最初のプロット。Y方向が高速化の倍率(32ビット処理を基準とする。0始まりなのはなんだかな~)で、X方向は表の行にあたるテスト項目。

benchmark64matplot

次のプロットは、Y方向の高速化倍率は変わらず、X方向はテスト条件にしたもの。benchmark64matplot2

Benchmarkしてみる

以前に実施された古いデータを眺めるだけでは面白くないので、手元の実機でもbenchmark64してみました。

i5-1235U 1.3GHz(10コア12スレッド、ターボブースト時3.3GHz/4.4GHz)

以下のような「軽い」(短いベクトル)だと瞬間的に終わってデータが取れません。

benchmark64(nsmall=2^7, nbig=2^13, timefun=function(expr)system.time(expr, gcFirst=FALSE))

以下くらいな「重さ」(長いベクトル)にするとそれなりの時間がかかるので数字が求まります。

benchmark64(nsmall = 2^16, nbig = 2^25, timefun = repeat.time)

結果はこんな感じ。benchmarkResults

結果は出たけれども、bit64素人にはなんだかな~なデータだな。何も言えねえ。

今回のbit64パッケージには上記のbenchmark64.data データセット以外に、以下のデータセットも含まれています。

optimizer64.data

こいつはパスだな。bit64の深いところに突っ込まないと噛みしめることはできなそうです。

データのお砂場(89) R言語、women、30代米国女性の身長と平均体重とな へ戻る

データのお砂場(91) R言語、acme、超過収益、bootパッケージ へ進む