スキマで暗躍する的な何か

このブログ書くたびにTwitterのフォロワーが減ってるような気がするんですが、たぶん気のせいです。

paizaオンラインハッカソン・Liteの件(延長戦)

まだしつこくやってたりします。

詳しくは、

前回書いた http://koukimino.hatenablog.com/entry/2014/08/27/202312 で。

 

[簡単な前回のあらすじ] Java以外の公式言語はなんとか無理やり最速記録に並べたものの、Javaだけ、0.07秒より短くできなくって、Javaのことが嫌いになりそうです。

Javaのことは、言語としては好きですよー一応。。そういえば今もIPA基本情報技術者試験の午後試験の選択科目に設定されていますが。。国家試験としてMicroSoft系などの一企業独自の技術には出来るだけ直接触れないようにしてきた傾向があるのに、Oracleはいいの? なんて思ったりします。いっそのこと、JavaはどこかでRubyに置き換えてもいいんじゃ。。なんて暴言か。 あとCOBOLは不滅なんだと思います(笑 念のため。。Javaは,Oracle Corporation 及びその子会社,関連会社の米国 及びその他の国における登録商標または商標です。JavaScriptは,Oracle Corporation 及びその子会社,関連会社の米国 及びその他の国における登録商標または商標です。 え、JavaScriptも!? どうやらそうらしい。。)

 

rana_kualuさんの

PHP - POH Lite 天才火消しエンジニア霧島 0.01秒の解答 - Qiita

 

cielavenirさんの

Paiza POH kirishima 最速解答 #paizahack_lite - Qiita

 

を見て、その発想は凄いなーと感心しつつ、

なんとか正攻法で、Javaをもう少し早くできないかなーと。

 

とりあえず、入手可能なソースを拝借して、どのくらいに

なるか見てみよう。。

 

paiza事務局さん模範解答2のもの

https://paiza.jp/poh/kirishima/result/0f3ccb242fc602120ed0d1d043c185e2

 

cielavenirさんの(

paiza_solutions/pohlite.java at master · cielavenir/paiza_solutions · GitHub

)もの

http://paiza.jp/poh/kirishima/result/6617d83fd0d4ed4abd4ce7eb429e0a3a

 

あれ? やっぱり0.07秒だな。。paiza事務局さんのものは、

CASE1でも0.11秒もかかってるし。どうもおかしい。。

 

そういえばPOH2での当時の私のJavaの記録は、

https://paiza.jp/poh/paizen/result/7aa09aa4070875bc57b352173ab0afac

でした。(Test case 1 は、0.04秒)

今、全く同じソースで試してみると。。

http://paiza.jp/poh/paizen/result/ef602d94b01f2c34357ac3ccbf7a48fa

ん。。。ありえないくらい遅くなってるんですが。

テストケース1:0.04秒 → 0.07秒
テストケース2:0.04秒 → 0.07秒
テストケース3:0.04秒 → 0.08秒
テストケース4:0.06秒 → 0.16秒
テストケース5:0.05秒 → 0.17秒
テストケース6:0.10秒 → 0.23秒
テストケース7:0.11秒 → 0.28秒

 

では、当時最速の miswilさんの提出コード で。。

http://paiza.jp/poh/paizen/result/b163d35364359d7e88b42d54323fa9ef

 ↓

http://paiza.jp/poh/paizen/result/d3b03f9bd2093825846b3fc59e5e9451

うわ、やっぱり遅くなってる。。

テストケース1:0.03秒 → 0.07秒
テストケース2:0.03秒 → 0.07秒
テストケース3:0.03秒 → 0.07秒
テストケース4:0.04秒 → 0.12秒
テストケース5:0.04秒 → 0.11秒
テストケース6:0.04秒 → 0.12秒
テストケース7:0.04秒 → 0.13秒

 

どうやら、何か環境が変わったみたい。

 

paizaコーディングスキルチェックの各言語のバージョン、環境情報 | ITプログラマー・エンジニア転職のpaiza より、

java 1.8.0 ということですが、前回はどうだったんでしたっけ?

java 1.8.0 は、(2014年3月18日)にリリースされているようですが、

POH2の頃は、java 1.7.0 でした? でも、Java8だからって遅くなるなんて無いですよね。。

 

というか、そもそも最速記録が0.01秒で残っているので、

今回の期間中に、0.01秒出せる性能があった時期があったのか、

それとも、今でも何らかの方法で早く処理させる方法があるのか

どちらかですもんね。。

 

結局わからずじまい。

悩む必要は無かったのかも。

 

とりあえず、ヒドいJavaのコード貼っておきます。

コメントに、「static-OJISAN!!」とか、

冗談で書いたまま提出してしまったので、paizaさんのブログには

公開されないことを祈ります。(笑 確か C# にも書いた気がする。。

あと、最後に、System.out.write 使ってバイト配列で標準出力してますが、

C#VBと違って特に効果はありませんでした。

System.out.println でも、Case1~7まで、0.07秒です。

 

POH_Light_Java