# Rustでの実装
以下の機能をRustで再実装した。
* TSVファイル読み込み：Rustライブラリ
* Turtleファイル生成
  * Rustプログラム
  * Rustライブラリ

Rustのライブラリ化には [Magnus](https://github.com/matsadler/magnus) を使用した。
* RustでRuby拡張ライブラリを書くためのライブラリ  
* Rustで書いた関数をRubyのメソッド呼び出しと同じように呼べる


# Convert実行時間
dbNSFPのY染色体のデータ（dbNSFP4.9a_variant.chrY）の先頭3万行のTSVファイルを入力として、Convertの実行時間を計測した。  
計測結果は以下の通りである。
* TSV読み込み時間：TSVファイルの読み込みに要した時間の合計
* Triple生成時間：TSVファイルのデータからconvert.yamlの設定にしたがってTripleのデータ（RubyのHash）を生成するのに要した時間の合計
* Turtle生成時間：Tripleのデータ（RubyのHash）からTurtleを生成するのに要した時間の合計
* Convert実行時間：Convertに要した時間（上の３項目の時間の合計）

| TSV読み込み方法（言語） | Turtle生成方法（言語） | TSV読み込み時間 | Triple生成時間 | Turtle生成時間 | Convert実行時間 |
| ----------------------- | ---------------------- | --------------- | -------------- | -------------- | --------------- |
| Ruby                    | Ruby                   | 0時間0分4秒     | 5時間50分40秒  | 0時間28分53秒  | 6時間19分37秒   |
| Rustライブラリ          | Rustプログラム         | 0時間0分2秒     | 5時間53分6秒   | 0時間3分40秒   | 5時間56分48秒   |
| Rustライブラリ          | Rustライブラリ         | 0時間0分2秒     | 5時間56分2秒   | 0時間3分7秒    | 5時間59分10秒   |
| Ruby                    | Rustプログラム         | 0時間0分5秒     | 5時間53分31秒  | 0時間3分23秒   | 5時間56分58秒   |
| Ruby                    | Rustライブラリ         | 0時間0分5秒     | 6時間6分26秒   | 0時間3分0秒    | 6時間9分31秒    |

* TSVファイルの読み込みはRuby、Rustとも数秒で差がない。
  * TSVファイルの読み込みはRustがRubyよりも6～10倍速いとも言われているが、数万行では差が無い（数千万行レベルだと差が出るかもしれない）。
* Turtleの生成時間
  * RustがRubyよりも約25分速い。
  * Rustのプログラムとライブラリでは、ライブラリがプログラムよりも約30秒速い。
* Convert実行時間の大半はTriple生成時間になっている。
  * Tripleの生成部分を速くしないと、Convert時間は短くならない。

