Androidアプリ、C#で書くとJavaの10倍速いことが判明 C言語NDKとほぼ同じ速度
■ このスレッドは過去ログ倉庫に格納されています
https://sec.ch9.ms/ch9/de11/2495af1a-6033-409d-983b-c0912b4ade11/WinDev018UWPXamarin_Custom.jpg
Your world is not just one platform nor device. With Xamarin, you can learn to target
Windows, iOS and Android while providing native experiences.
James will quickly deep dive into how to quickly execute this.
He shows how to do build an application that targets Windows, iOS, Android, and even has a web front end as well!
(動画)
https://channel9.msdn.com/Events/Windows/Windows-Developer-Day-Fall-Creators-Update/WinDev018 Xamarin使って開発?
Xamarinコミュはオタサーの姫を信仰するカルト教集まりの印象あるから触りたくないな… iphoneと比べるとゲームがモッサリしてるのもこれが理由? オラクル会長のラリーエリソンは
自宅を和風建築にし日本庭園作ったり超絶親日家なのに
日本のアメリカかぶれのライターもオラクル叩くよね .netは結局Windowsでしか使われないまま死ぬんか?
これは実質Javaへの敗北やないんか >>52
Macがないとコンパイルできない。技術的な問題ではなくAppleがMac以外でのiOSアプリコンパイルを規約で禁止してる。 >>63
文化と親日感情は切り離して考えろガイジ
ヨガが流行ってるからってインド大好きってなる奴はいない >>63
あの人南禅寺付近の別荘を洋風に改造してない?
数年前にグーグルマップ見て心配になった >>65
元々Windowsマシンのハードウェア差分やOSバージョン違いを吸収するためのものだし
充分役目は果たした JAVAという言語そのものは別に悪くないけど、
JVM上で走らせるからクソ遅いんだよな。
ネイティブコードが速いのは当たり前だけど
androidのハードの差をどう吸収するのって話になる >>76
今はARMしかないんだから別に吸収する必要なくね? >>59
それもあるだろうけど、Unity製とかならAndroidに最適化されてない せっかくスッキリJava読んだのに無駄になるのかなぁ JVMはサーバーサイド最速に倒されてるからな
サーバー用途ならCとかで作られるアプリよりも速い まじか
昨日アンドロイドスタジオインストールしたばっかりなのに
cでも行ける? WindowsPhoneが生きてりゃあなあ
泥なんかすぐにも投げ捨てたいが Javaは失敗した言語
Cが難しくてわからないバカ用 >>87
ユニコーンよりマーク2のが動きが軽快だった。 はぁ、数年前から.netネイティブコンパイラは有ったけど、今回、標準でバンドルされる様になったの? >>81
HotSpotVM以外も早いんかね
OpenJDKとかどうなんだろう Xamarin.DroidはC#で閉じて実行するぶんには速い。
nativeからのコールは場合によってはnative→ART→Monoと2回マーシャリングされるので遅くなる。
Win32みたいにGoogleがnativeで色んな低レベルAPI用意してくれたらXamarin最強になるんだけどねぇ。 >>5
SOURCE-COMPUTERとOBJECT-COMPUTERは?昔専門学校生の頃COBOLの実習で、ピリオドが抜けていてコンパイルエラーってよくあったな。 >>95
WORKING-STORAGE SECTION.は? >>94
Xamarin.Anndroidは隠しオプションでLLVMで事前にネイティブコードを吐くことができる >>97
マジレスすると学生の時はそれ書かなかったな。DATA DIVISIONのみ。 >>99
使うAPIによってはAOTコンパイルでも結局2回JNIを経由しちゃうのよ。
Javaなら1回なのに。 これってC♯が優れてるのではなくて
単にネイティブコードとjavaとの速度差なのでは? >>103
ネイティブコードの対義語はjavaではなく中間コード。 速度は速いかもしれないけど
グラフィック系の命令ってどうなってるんだっけ?
.NETでは事務アプリしか作ったことないからさっぱりワカラン DATA DIVISIONってギャバンで叶和貴子が言いそうだよな ベンチマーク取るならなんでアセンブラで書いたコードと比較しないんかね。
アセンブラはCの10倍は速い。 >>110
それはないw
今時のCコンパイラは人が下手に書くより速い。 いまどきのコンパイラには最適化と言った冗長なレジスタ操作を省いたり、重複したコードをまとめたりする機能が付いてるんだよなぁ。
だから人間がアセンブラで書いたコードよりシンプルな処理を吐き出して来るんだ。
まあ、おかげでデバッグしたくてもソースとの対応が難しいんだけどな。 LLVMなんて、ある関数呼び出しにおいてその実引数による返り値が一定と判断するとそもそも関数呼び出しコードさえ削除されて即値のコードが吐かれる。
単純な関数ならともかく、複雑な関数だと人間によるリファクタレベルの最適化じゃ太刀打ちできない。
LLVMはコンパイル時に内部で仮想的に実行して最適化判定するんだろうね。 >>113
新し目のgccでもその最適化してくれるで >>113
でも実行時のジャストインタイムでのCPU種別毎の最適化ができないだろ
中間コード方式じゃないから一度バイナリにして配布してしまったら
その後でCPUスペックやコア数違う環境では最適実行にならない Javaクライアントアプリでは遅くて使いモノにならんのは当初から言われてた
結果、サーバーサイドアプリ(サーブレット、JSP)がほとんどになったハズなのに、Android出てからクライアントアプリもJavaでってGoogleが採用しちゃったのが元凶
GoogleがJava以外で開発言語提供してたら状況変わってた >>31
「いのうえ」で変換かけたら「#上」で出てくるから上を消せばいい >>117
> でも実行時のジャストインタイムでのCPU種別毎の最適化ができないだろ
そうでも無い。 Javaって普及してるってだけでただのゴミだもんな。 >>115
新しめのgccはコアにLLVM使ってたような?
>>117
JITの最適化は都市神話レベルじゃね?
そもそもLLVMはコンパイル時にJITの最適化してるようなもんだし。 >>121
libgccjit.soみたいなののこと?
これが本格的に使えるようになって
C#やJavaのようなGCの仕組みも実装されれば
C/C++もやっとサーバーサイドでJava並みに速くなれるよね UnityでIL2CPP通さなくて良くなってビルドが早くなるみたいな話? >>110 >>112
実際に簡単なサンプルコード書いて動かして比べてみ。
Cは簡単なコードでもスタートアップライブラリやスタックオーバーフローチェックライブラリなどが自動的に組み込まれるので
バイナリサイズがかなりでかくなる。アセンブラなら数百バイトのものが数十k〜100kバイトを越えるサイズになる。
これだけ差があるとロードするだけでも時間差が大きい。本来やりたい処理を実行する時間よりロードする時間のほうが長くなる。
サーバ上のアプリのようにたくさんアクセスされて何度も実行される処理ならさらに差が出る。
数百バイトならCPUのキャッシュに入ってしまってディスクからリロードする時間さえ不要になるが、
Cのバイナリならでかいから一々ディスクから読み直さなければならない。 >>128
それはないw
CPUキャッシュの次はHDDとかの二次記憶ってw
一次記憶のSDRAMの存在忘れてねぇ? >>107
CGI+がラップしてあってそれを使える
俺もあまり使わんから詳しくはわからん >>128
んでそれでサイズ可変のJSONとかどう処理するんだよ どういうこと?Androidアプリが10倍ヌルサクになるの? >>125
サーバサイドの開発案件はふつーにターゲットに合わせてbuildするだけでしょ。 Javaは言語として悪くはないと思うが普及と引き換えにソースがゴミ化した >>135
後方互換気にした影響で、言語仕様も美しくないしな。
それもあって、JVM言語乱立してるんだろうね 考え方はいいんだけどなあ。トロいのは致命的だったな。 >>68
初期のオラクルの立ち上げに膨大な開発費が掛かっているからしょうがない。
正直、オラクルだけがSQLを満足に叩ける実装だったし、処理系以外にも稼働
中のストレージ処理とかで他に追随できない製品を出していた。
SQL-92./2000 なんかの標準規格も、以降は全てオラクルに倣っている。
オラクルの実装がこなれてきた、Cybaseもオラクルの機能を模倣するように
なっていまMSのSQL Server になっているし、MySQLなんかも出てこなかった。
そういう会社がいまJavaやMySQLを逆に吸収し自社の基盤としてるのは面白いと思う。 じゃぁJavaしかわからん俺が今から調べながらC#で書くぞ。
10倍早いんだよな? >>140
やってみること手を動かすことは大事。
とりあえずAndroid StudioとXamarinの環境を作るんだ。 アンドロイドはあれだけの機種の
互換性取るためにJava使わざるを
得ないからね x86サポートなんか
やめたら良いのに >>142
機種間の互換性はOSやライブラリーで取るもんだろ? >>143
流石にCPUアーキテクチャが違ったら無理w >>144
いや、x86版Androidにはバイナリトランスレータが乗ってるので
ARMネイティブアプリも動く 中間コード→ネイティブにリコンパイルしてネイティブで実行できるようにはならんの? むしろVMコードを直接実行出来るCPU作るのです。 本当はjavaだってarmはハードウェアアクセラレータあるから
本気だせば遅い訳じゃねぇんだけど
つまるとこ、使ってないだけじゃろ ■ このスレッドは過去ログ倉庫に格納されています