自転車☆妄想日記: 3月 2013

2013-03-17

全く役に立たない無印CX組み立て方法 part7

無印CXで自転車通勤を始めて大体一ヶ月。ここらで、通勤で使った場合のインプレでも書いておこうかと思う。


普通のインプレでは面白くないので、大体2週間毎に、こんなリズムで乗ってみた。


第1・2週 無印CX マキシス・マッドレスラー(32c・3bar)
第3・4週 ProLite Espresso ヴィットリア・ストラーダ(23c・4bar)
第5・6週 無印CX パナソニック・S2(23c・4bar)


バイクが途中違うやんけというツッコミは受け付けない。いや、別に狙ってこういうリズムになったわけではないが、二週目の終わりにパンクして、直すのが面倒で二週間経ってしまった。そして、パンク修理の時に思いついて、たまたま余っていた安クリンチャーを使った、という顛末。


----------


さてそれでは、第1・2週目。

普通のCX仕様での通勤にて。この時、丁度雨にも恵まれのでいいテストになった。乗り心地に関しては、特にいうことはない。32c位になると、舗装路ではもはやフレームと関係ない位乗り心地がよい。ただ、見た目の通り大きな段差の衝撃はそれほど吸収してくれない。どうも自分は衝撃吸収性の高いフレームに縁がないらしい。逆に、踏んだら結構進みそうなだなと思った(腰が痛いので、実際には踏んでない・・・)。

ちなみに、フォークはカタイ。もしかすると、オフ用なので頑丈なのかもしれない。ディスク台座がついているので、あんまりフォークの先っぽがしなってしまっても困る、ということもあるかも。この辺りは、CXを街乗りに流用したい人は要注意かもしれない。

意外だったのは、雨。メカディスクだからか判らないが、音鳴りがひどい。しっかり止まることは止まるので問題はないが、何しろうるさい。しばらく乗ってると、段々鳴りは少なくなる。ローターは濡れてないほうがいいのかもしれない。(2013/4現在。今はこの音にも慣れてしまいましたw)



パンクしたからバイクを変えた第3・4週目。

久しぶりのアルミ。半端なくカタイ。後ろの三角形がまるで塊のように感じられた。自分でもよくこんなのに乗っていたなあと思ったが、乗って10分もしたら慣れてしまったw こっちは、ホントに踏んだだけ進む。乗り換えて比較すると、わかりやすい。

しかし、振動に関しては安物とはいえチューブラー。タイヤの空気圧が低めの為、かなり押さえ込まれている。そのせいで抵抗が増えているという感じもない。やはりロードはチューブラーの方がいい、ような気がする・・・。

あと意外だったのが、高速での下り。段差や振動を吸収して意外に良い乗り心地。やはりこのバイク、高速巡航向きなのかもしれない。




タイヤの威力をなくして乗ってみるとどうなったか、第5・6週。

乗り心地に関してはタイヤが殆どを担っていたんではないか、という疑問を消し去れなかったので、23cのタイヤをはかせて走ってみた。

結果、そんなことはなかった。

おおきな段差ではほとんど変わらなかったが、微振動や乗り心地はかなりいい。さすが、(ほぼ)フルカーボン構成のバイク。塊みたいなEspressoに比べると、まるで別の乗り物だ。

よく考えると、CXに23cって、単なるアップライトなロードということで、悪いわけがない。雪等の悪天候を考えると冬はCXタイヤ、ってことになるかも知れないけど、これからの時期は23cで全く問題ない。欲を言えば、タイヤの交換ではなく、オン・オフ用のホイールが別にあればいいのだけど。

そして、今度はそこそこのパワーで踏んでみた。平地で40キロオーバーで走ってみたが、そこにいたるまで気持ちよく加速することが出来た。やはり、ある程度の固さはある。もっとも今の腰の状態ではそれ以上の速度を出すのはむずかしく、もしかすると40キロ前後で打ち止めの剛性かもしれない。これは、またの別の機会に試したいと思う。

正直、この乗り心地でこの剛性なら、ちょっとしたロードのレースなら問題ないんでは?と思う。例えば、アップライトでも問題のない登り主体のレースとか。


-----------


というわけで、早速JCRCにメールで問い合わせてみた。「シクロクロス車で、ディスクブレーキはOKでしょうか?」と。


そして、その答えは「OK。」


いやー、さすがJCRC。懐が深い!


そういうわけで、もしかすると、今期はこのCXでJCRCに参戦する、といっても、前はEscapeで出てたから別段新しい試みともいえないが。


次回のインプレは、ロードレースでのCX、ということになるだろうか?こんどこそ、ハイトルクで踏むことが出来るか?


乞うご期待。

2013-03-14

パフォーマンスアップの初歩の初歩 Part1

こないだの話。全然自転車じゃない話。


あるWindowsのフォームアプリの処理速度が遅いので何とかしてくれー、という依頼があった。

早速そのアプリのソースをみると、「そりゃ遅くなるわなー。」という箇所が幾つかあったので、早速書き換え。時間を測ってみると、修正前は30秒ほどかかっていた処理が2,3秒で終了w 

依頼人(元のコード書いた人じゃないよ)は大層よろこんだので、それはそれでよかったのだが・・・・・。


ちょっと待て。


今回修正した内容は、初歩の初歩。誰でも知ってる内容だと思っていたのだが。でもよく考えてみると、他の現場でも堂々とこれを無視してコーディングしてる人がいた、ということは、知らない人は知らない(そりゃそうか)っていう知識なのか・・・・?


------------


というわけで、自転車ブログにも係わらず、プログラムについて突然語り出したPart1。
今回は、「文字列の結合の危険性」について。


VB系で、文字列の結合と言ったらこんな感じ、なんの変哲もない。


str = str & "hode"


少ない数ならこれで問題ないが、データをどこからか読み込んで、そのデータをループさせて結合していくなんて処理で使うと一度に地獄と化す。例えばこんな感じ。この例では、文字列"hode"を文字列変数strに100回突っ込むというもの。


For i = 0 To 100
  str = str & "hode"
Next



こういう処理の場合、内部でどういったことしてるのかということを考えた人が書いた記事がこれ。これはAccessの話だけど、.Netでもやってることは大差ないと思われる。

要するに、「大量の文字列データを取り扱う時に、文字列変数にどんどんぶち込んでいくやり方はNG」ということ。



---------------



ではどうすればいいのか?

VB6(VBA、VBS含む)であれば、一旦、配列(この例では、Ar)にデータを入れて、最後にJoinする、が正解。


For i = 0 To 1000
  Ar(i) = "hode"
Next
result = Join(Ar, ",") '第二引数は好きな区切り文字を入れて! 空文字・改行コードも可能。


入れるデータ数が予めわからない場合は、毎回配列をRedimしなければいけないので面倒だけど、それでも普通の文字列結合に比べると、遥かに高速。


VB.Netの場合は・・・・、勿論、List(Of String)を使う。StringBuilder?まあ、その辺りは趣味で決めていいんではないかと。処理速度にすごい違いはないようだ。個人的には、ForEachメソッドが使えるのでListを選択してしまうことが多い。



For i = 0 To 1000
  list.Add("hode")
Next
result = String.Join(",",list.ToArray()) '第一引数は好きな区切り文字を入れて! 空文字・改行コードも可能。



配列やリストを使うことによって、文字列変数の結合を使うシーンはかなり減るはず。あとはクエリ文字列を結合して生成、なんてシーンでみることがある。これは根強く残っている。例えば、こんな感じ。


str = str & " SELECT *"
str = str & " FROM USERS"
str = str & " WHERE id = '" & ID & "'"


この場合は、結合する回数が少ないのでパフォーマンスに与える影響は殆どない。問題無し・・・・・、といいたいところだが、今度はSQLインジェクションの関係で、このコードはよろしくない(三行目の変数IDでインジェクションが可能、SQLインジェクションに関しては、ぐぐって調べてください)。個人的には、可能であればストアドを作ってしまう。クエリの変更を考えると、ストアドの方が修正作業が簡単だからだ。


いろいろ試した結果、個人的には文字列変数の結合は殆ど使わなくなってしまった。そういったわけで結論は、ざっくり「どのシーンでも、変数を使った文字列の結合は、可能な限り避ける」ということでいいと思う。


では次回。