トップページ⇒tech
1002コメント383KB

Swift part9 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 8b3c-/6Y/)2016/10/18(火) 11:34:44.16ID:oLo879ze0
WWDC2014で発表されたAppleの新言語Swiftについて語りましょう

関連スレ

プログラミング言語Swift 3
http://potato.2ch.net/test/read.cgi/mac/1408762479/

[SDK]iPhoneアプリ開発初心者質問箱47[touch][iPad]
http://potato.2ch.net/test/read.cgi/mac/1470902093/

Xcode part14
http://potato.2ch.net/test/read.cgi/mac/1476190499/

Swiftアンチスレ part1
http://echo.2ch.net/test/read.cgi/tech/1458491343/

前スレ
Swift part8
http://echo.2ch.net/test/read.cgi/tech/1463149806/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0092デフォルトの名無しさん (ワッチョイ 039a-ijxz)2016/11/02(水) 02:59:20.17ID:0L1TooRo0
差分ビルド効いてても、コンパイル単位の切り分けってビルド時間短縮につながる?
0093デフォルトの名無しさん (ワッチョイ fb3c-nx48)2016/11/02(水) 12:52:27.64ID:vzQ+b2bv0
試して報告してくれ。
0094デフォルトの名無しさん (ササクッテロリ Sp7f-BXGM)2016/11/02(水) 14:38:43.54ID:rHHkFyogp
メリット:
ObjCに比べてコード量が減って作業効率が上がります

デメリット(これは言わない):
ObjCに比べてビルド時間が伸びて作業効率が下がります
ObjCに比べてバイナリ容量(IPAサイズ)が増えてDL時間が長くなります
ObjCに比べて動作性能が悪く実行時にもったりとした動作になります
ObjCに比べてXcodeバージョン更新に伴うコードメンテ量が多く保守工数が増えます

商用ソフトウェアでSwift採用を交渉して通ったらびっくりするよ
それ以前に、Swift採用を交渉してきたらプロマネが(悪い意味で)びっくりするかもしれんけど
0095デフォルトの名無しさん (ワッチョイ 3f13-3xFl)2016/11/02(水) 16:40:29.18ID:db1quxwb0
>>94
製品の良し悪しは言語で決まる訳じゃないのに
0096デフォルトの名無しさん (スプッッ Sdff-O9pn)2016/11/02(水) 18:00:18.26ID:RCRK3FtZd
>>91
おう、前向きやん、頑張れ!

一つアドバイスするなら、
すぐに買ってもらえなくてもがっかりしないこと
来年買ってもらえたら超絶ラッキーくらいに思っとけ

手間暇かかるし、心も挫けそうになるけど、
やらないと何年たっても買ってもらえないからな
0097デフォルトの名無しさん (ササクッテロル Sp7f-O9pn)2016/11/02(水) 18:29:15.23ID:UuGtpbllp
>>94
>ObjCに比べて動作性能が悪く実行時にもったりとした動作になります
他は同意出来るけどこれはどうなの?
WWDCではSwiftの方がすげー早いよって紹介してたんだろ?
0098デフォルトの名無しさん (スプッッ Sdff-Jz20)2016/11/02(水) 19:37:29.88ID:V5jMGm9Nd
そりゃスイフトのほうが早いだろう
0099デフォルトの名無しさん (ワッチョイ b38c-BXGM)2016/11/02(水) 21:24:36.15ID:RaymUkXW0
swift betaで限定条件下ならばobjcよりswiftのが早かった
これは、基底クラスのSwift ObjectクラスがObjC NSObjectクラスよりオブジェクトを構成する要素が少ないからかな

ただ、それからランタイムのバグだの、言語仕様のモダン化だの、もりもり改変して劣化の一途よ
NSHogeとHogeの透過変換とか、for eachでイテレータ利用とか、同じことするのにオブジェクト生成や関数コールが増えるよ
for eachで+2づつイテレートしたらC-style forより1,000倍遅かったのにはびっくりしたわ、+1づつなら同程度速度だったけどさ

ObjCのクソ文法を崇める気はさらさらないけど、Swiftの多大なデメリットを直視しないのもどうかと思う
ユーザデメリットの容量/性能を気にしない商用開発がもしあるならSwiftでも良いんだけどねー、趣味PGのおもちゃとしては楽しい
0100デフォルトの名無しさん (ワッチョイ d7ba-Jz20)2016/11/02(水) 21:26:12.54ID:xZyO7jMI0
林檎製アプリもswiftに置き換えてるのに
0101デフォルトの名無しさん (ワッチョイ d742-0DI1)2016/11/02(水) 22:17:16.59ID:aJUXU1mT0
性能下がってきたなんて話は今のところ聞かないが
0102デフォルトの名無しさん (ワッチョイ 133c-O9pn)2016/11/02(水) 23:38:41.44ID:ihp4ITm60
まだコア部分はObj-Cだからでしょ
0103デフォルトの名無しさん (ワッチョイ fd8c-AEdt)2016/11/03(木) 00:05:58.26ID:YyMYD2K/0
なぜ3で削除されたC-style forからの性能劣化を具体例に出したのになかったことにするのか
前スレだか前々スレだかで実測して数値も出した情報だぞw
0104デフォルトの名無しさん (ワッチョイ 7162-DGmA)2016/11/03(木) 00:14:56.13ID:BOny4tTs0
Swiftは煽り抜きでダメだなもう
ガバナンスも利いてないしめちゃくちゃ
文法も思想もとっちらかったクソ言語に成り果ててる
0105デフォルトの名無しさん (ワッチョイ bc42-8n5s)2016/11/03(木) 06:48:25.75ID:GxO0spX30
>>103
ちゃんとstride使ってるか?
0106デフォルトの名無しさん (ワッチョイ 5e93-m5qj)2016/11/03(木) 06:52:50.32ID:1srrFQD30
>>99
つまりは酸っぱい葡萄が大好きな狐さん?
0107デフォルトの名無しさん (スプッッ Sd78-m5qj)2016/11/03(木) 07:24:57.35ID:UUNhEaPVd
>>99
また聞きかじりでdisりたいだけのしょぼい奴が来たか

>swift betaで限定条件下ならばobjcよりswiftのが早かった
>これは、基底クラスのSwift ObjectクラスがObjC NSObjectクラスよりオブジェクトを構成する要素が少ないからかな

基底クラスの要素数が実行速度に影響するなんてどこの言語の話だよ

そもそもswiftは「クラスより構造体」で、標準ライブラリもほとんど構造体に置き換えられてるぜ



>for eachで+2づつイテレートしたらC-style forより1,000倍遅かったのにはびっくりしたわ、+1づつなら同程度速度だったけどさ

それはコードの書き方が下手
どうせどっかの聞きかじりだろ?自分で試してなくてww
悔しかったらそのfor each文とやらを書き込んでみろ
みんなで実行速度測って笑ってやるから
0108デフォルトの名無しさん (ササクッテロリ Spbd-DGmA)2016/11/03(木) 08:21:24.01ID:w1NhWsHTp
煽りたいだけの愉快犯っぽい

betaが早かった理由はクラスじゃなく構造体だからって論でおk?
基底オブジェクトが違うからって本質から外れてないから構わんけど

前スレ漁るか、C-style for削除のProporsalのサンプルの通りだから自分でどうぞ
0109デフォルトの名無しさん (ワッチョイ 718f-DGmA)2016/11/03(木) 09:37:42.70ID:zeI07SjJ0
obj-c静的言語を装った動的言語だから。
メソッド呼び出しに当然オーバーヘッドがあるからswiftが早いのは当然。

でも高速さが必要なところはcで書くという柔軟さを内包してた。

あれ、swift擁護しようとしたらobj-cが良さげになってきた
0110デフォルトの名無しさん (スプッッ Sd78-m5qj)2016/11/03(木) 12:43:32.38ID:UUNhEaPVd
>>108
>煽りたいだけの愉快犯っぽい

そうだよ、俺は聞きかじりの知識で何かをdisって
自分が偉い気分になってるやつをいじめるのが好きなんだ

例えばさ

>betaが早かった理由はクラスじゃなく構造体だからって論でおk?
>基底オブジェクトが違うからって本質から外れてないから構わんけど

こっちはいいけど、そっちこそいいのか?
>>99での主張である
ベータは速かったかもしれないが本実装では遅くなる
の論拠を自分で否定してることになるんだぞ?

クラスから構造体への置き換えが進んだSwift3ではさらに速くなっちゃうぞ?
本当にそれでいいの???

>前スレ漁るか、C-style for削除のProporsalのサンプルの通りだから自分でどうぞ

ほらね逃げた
世の中にforのサンプルなんていくつあると思ってるんだ?
それにforはデータ構造と一緒に考えなきゃ意味がないだろ?
まさか空ループ回してるんじゃないだろ?
あなたが、実際に動かしてみたコードで検証しなきゃ意味ないんだよ。ここにコピペしてみろよ
何も1000倍かかったって事実を否定したいってわけじゃないんだぜ
その事実を確認してみたいだけだ

まさかfor文一つ人目にさらす事が出来ない臆病者なのか?
自分でやってみてないから動作時間の測定方法知らないとかそういうわけじゃないんだろ?
0111デフォルトの名無しさん (スプッッ Sd78-m5qj)2016/11/03(木) 12:44:46.62ID:UUNhEaPVd
>>109
心配すんなって
swiftからでもcは使えるから
0112デフォルトの名無しさん (ワッチョイ 7162-dKGq)2016/11/03(木) 13:12:33.29ID:BOny4tTs0
それはSwiftのwithout Cに反するので本末転倒
却下
0113デフォルトの名無しさん (スッップ Sd28-DGmA)2016/11/03(木) 13:27:08.44ID:CPk3BZK9d
必要なかったのに政治的にぶっ込もうとしてグダグタになってる典型例だな
前向きだったやつらも愛想尽き始める
0114デフォルトの名無しさん (ワッチョイ 714e-dKGq)2016/11/03(木) 13:46:18.73ID:0SaHyNen0
without C の真意はポインタの隠蔽?
0115デフォルトの名無しさん (ワッチョイ d0c9-dKGq)2016/11/03(木) 14:03:19.84ID:Uhidgpr40
>>108
前にこのスレで出てたfor文のベンチマークもどきならベンチマークとして計測の仕方がまずくてベンチマークになってなかった
面倒くさいから黙ってたけど
0116デフォルトの名無しさん (スッップ Sd28-DGmA)2016/11/03(木) 14:11:38.60ID:CPk3BZK9d
>>114
どうなんだろうね
表面的な見た目も無駄にwithout Cにしようとしてるきらいがあるけど
0117デフォルトの名無しさん (ササクッテロリ Spbd-AEdt)2016/11/03(木) 14:32:53.86ID:w1NhWsHTp
>>115
Swift Sandboxでのサンプルがダメってんなら提供はむずいのう
ELF読み込み時間を考慮してないとか、単独試験になってないとか、評価回数が少なすぎとか、そりゃツッコミどころはあろうよ

ポインタ文法も薄目に見たら表面上だから・・・
宣言(予約語)、制御文、演算子をC/C++から違うものにしたいんだろうなぁと思う
0118デフォルトの名無しさん (スプッッ Sd78-m5qj)2016/11/03(木) 14:50:34.97ID:UUNhEaPVd
>>115
そうだよなぁ

おれ>>110で人の事叩いてみせてるけど
自分自身for文単体の実行速度計測なんてできる気がしない

下手なサンプルコード書くとコンパイラに定数展開されて実行時間ゼロにされちゃうし
最適化避けにio入れたら何測ってるか意味不明だし

最適化オプションを切るという手もあるけど、それじゃ最適化してリリースする実プログラムにとっては意味のない数字にしかならないし

計測方法もタイムスタンプ取るだけだとosやコンパイラに誤魔化されちゃう可能性あるし
プロファイラはやっぱり細かいところを見ようとするとサンプリング負荷の方が大きくなっちゃうし


俺自身は言語としての処理速度にはあんまり興味を持てないや
取り敢えず動くプログラム作ってみて、後はプロファイラ見ながら動かしてみて
不自然に遅いところがあったら手直し
それでイライラしない速度になったらOK

別に言語や開発環境が変わってもやる事は変わんないなぁ
0119デフォルトの名無しさん (スプッッ Sd78-m5qj)2016/11/03(木) 14:58:28.17ID:UUNhEaPVd
>>117
え?、、、、、、

コード読んでないけど、それ、forの速度比較にならないよ
0120デフォルトの名無しさん (ワッチョイ 7162-dKGq)2016/11/03(木) 15:34:45.56ID:BOny4tTs0
>>116
「無駄に」には禿同
0121デフォルトの名無しさん (ワッチョイ ef53-nJsM)2016/11/03(木) 21:07:23.94ID:GA4nbDQd0
>>114
ビット、バイトレベルの操作はCに任せて、もっと大きな束(Class、Struct)を操作することに専念するという意図だと思ってる
低レイヤーの処理をSwiftで置き換えようという動きはほとんど見られないからな
URLSessionも内部ではCURL使ってるし
0122デフォルトの名無しさん (ワッチョイ ef53-nJsM)2016/11/03(木) 21:11:27.54ID:GA4nbDQd0
SwiftはObjCより役割が明確になった
低レイヤーもゴリゴリかけるObj志向より
低レイヤーはCで良いです。Obj志向持ち出さないといけないくらい大規模開発になったらSwiftから操作します
本当に開発車が求めてたのはこっちだと判断したのだろう
0123デフォルトの名無しさん (ワッチョイ 718f-DGmA)2016/11/03(木) 22:36:47.60ID:zeI07SjJ0
>>122
いやいやcとの連携を考えたら圧倒的にobjcでしょ。swiftからcの構造体とか関数を扱うのってそんなに楽だったっけ?
0124デフォルトの名無しさん (ワッチョイ 7162-dKGq)2016/11/03(木) 22:52:01.17ID:BOny4tTs0
だからwithout Cを掲げといて困ったらCとか何なの...
Swiftは右往左往しすぎ
0125デフォルトの名無しさん (ワッチョイ fd10-7tG6)2016/11/04(金) 00:57:42.08ID:qpsq4Ku/0
C++で書かれたライブラリを使うときはObj-C経由になって面倒だよね、自分でラッパー書かないといけないし
まじめに設計すればいいのだろうけど、設計コストが割けない場合は面倒臭いからObj-C++のラッパークラスにビュー操作とかたくさん入れるみたいなぐちゃぐちゃのコードができそう
0126デフォルトの名無しさん (ワッチョイ d0c9-X2H6)2016/11/04(金) 01:55:19.84ID:Y6RBUWTc0
Objc++ってc++14の機能とか使える?
0127デフォルトの名無しさん (ワッチョイ 5e93-m5qj)2016/11/04(金) 06:49:07.92ID:IQwZZLFC0
>>123
うん、ヘッダファイルをインクルード(import)するだけで
Swiftプログラムの中で普通にcの関数や構造体が使える

最初構えちゃったけど、実際やってみると拍子抜けするくらい簡単にcのプログラム呼び出せちゃう

JavaのJNIに比べると格段に楽


c++はワンクッション必要だけどそれも3日で気にならなくなるレベル
0128デフォルトの名無しさん (ワッチョイ 7162-dKGq)2016/11/04(金) 08:38:39.73ID:f4ftpOMT0
もはやObjectivc-Cでいいじゃねぇかっていう...
0129デフォルトの名無しさん (スップ Sd78-DGmA)2016/11/04(金) 08:42:12.75ID:2pY38tv9d
だめでふ!
0130デフォルトの名無しさん (スッップ Sd28-DGmA)2016/11/04(金) 09:19:39.69ID:YHeqrh8yd
>>128
それな
でも政治的に無理
0131デフォルトの名無しさん (ワッチョイ 5e93-m5qj)2016/11/04(金) 09:35:38.12ID:IQwZZLFC0
>>128
俺がObjective-C使えないから却下
0132デフォルトの名無しさん (スプッッ Sd78-DGmA)2016/11/04(金) 09:48:35.53ID:tOE/Rf6pd
>>131
雑魚おつ!
0133デフォルトの名無しさん (ササクッテロリ Spbd-DGmA)2016/11/04(金) 14:21:14.46ID:jHHFhRr8p
swiftpp誰かメンテしろよ、、、
0134デフォルトの名無しさん (ワッチョイ 3b3c-A9qr)2016/11/04(金) 15:05:36.52ID:57dKQ7qw0
>>126
objc++ がというよりも、clang が使えるものは全部使える。inline smalltalk の書ける c/c++ でしかないのだから。
Xcode の c/c++ 部分のオプションとか一通り見てみるといいよ。
0135デフォルトの名無しさん (ワッチョイ 653c-DGmA)2016/11/04(金) 15:41:44.53ID:AA4S5DKA0
>>134
「オプションとか」の「とか」は、「オプション」以外の何?
0136デフォルトの名無しさん (ワッチョイ ef53-nJsM)2016/11/04(金) 22:14:16.59ID:wN0RTOka0
>>128
ObjCの命名規約をSwiftに擦り合せるだけで平和になれるかも?

まあそんなこと冗談でも言いたくないんだけどな
主にPOP、generics、が便利すぎてとてもObjCでいいじゃねえかとか言えない
0137デフォルトの名無しさん (ワッチョイ ef53-nJsM)2016/11/04(金) 22:18:57.13ID:wN0RTOka0
Swiftに足りないのはobjc_setAssociatedObjectくらいだなあ
あれ相当が純Swiftにも欲しい
0138デフォルトの名無しさん (ワッチョイ 653c-dKGq)2016/11/04(金) 23:22:05.97ID:fKNeNx+T0
純Swiftってなら、kvoとかも欲しいわ
removeObserverを連続で読んでもクラッシュしないようにして欲しい
0139デフォルトの名無しさん (ワッチョイ fdad-AEdt)2016/11/04(金) 23:22:36.85ID:E6UScSsN0
任意のKVOとかJS等々のテケトーな動的言語じゃないのに使いたくない><
気分的な問題もさておき、APIのI/Oで型が保証されないってのは言語仕様で安全(笑)と言えなくなるのではないかと
なお、GenericsはObjCにも随分前にバックポートされたダルルォ
0140デフォルトの名無しさん (ワッチョイ ef53-nJsM)2016/11/05(土) 05:37:01.21ID:Z0XZZi850
ObjC の lightweight generics と Swiftのgenericsを一緒にしたらあかん
前者はただの型安全、後者は強力なコード省略機能だから
0141デフォルトの名無しさん (ワッチョイ 653c-8n5s)2016/11/05(土) 11:25:04.49ID:J7M9MHD00
Swift の generics は generics としては出来損ないだからな
0142デフォルトの名無しさん (スププ Sd28-m5qj)2016/11/05(土) 11:49:58.86ID:udcWDT/td
>>139
ま、IOが型に限らず安全じゃないのは根源的な問題だから
受け取ったデータをどうやって安全な型に変換して
持ってこれるようにするのかが
言語仕様屋さんとライブラリー設計屋さんの腕の見せ所
0143デフォルトの名無しさん (ササクッテロリ Spbd-DGmA)2016/11/05(土) 14:31:34.27ID:uB6+UJGhp
つまり根源的(笑)には動的型付け言語最強ってことだ

rustくらい凶悪で安全な型推論と型変換があればなぁ
それをオブシーに毛が生えた程度のスイフトに求めるのは酷だけども
0144デフォルトの名無しさん (ワッチョイ 653c-8n5s)2016/11/05(土) 15:50:28.36ID:4esgQXgk0
Rustをパクろうという恥も外見もないプロポーザルが多数あったけど、
ベースがオブシーのSwiftに取り込めないだろうな
0145デフォルトの名無しさん (スププ Sd28-m5qj)2016/11/05(土) 15:52:39.39ID:udcWDT/td
>>143
煽りにしてももう少し捻ろうよ

各言語は設計者の決めた土俵で最強を目指している
そしてその土俵は言語ごとに驚くほど違う

違う土俵を比べてなんか意味があるのか?
0146デフォルトの名無しさん (ワッチョイ 7162-dKGq)2016/11/05(土) 20:38:23.05ID:UUL9l/XE0
Swiftは一体何を目指してるのかさっぱりわからんな
疲れるわいい加減
0147デフォルトの名無しさん (ワッチョイ bc42-8n5s)2016/11/05(土) 22:37:03.08ID:Egd9oR020
そりゃJavaの後釜だろう
0148デフォルトの名無しさん (スップ Sd78-DGmA)2016/11/05(土) 22:41:52.42ID:BUcUWGbDd
えっ?
0149デフォルトの名無しさん (ササクッテロリ Spbd-DGmA)2016/11/05(土) 22:52:10.19ID:uB6+UJGhp
言語仕様屋さんは土俵を作ってるんだろ?
しかしgoのdeferとかパクってて今さら恥も外見もない

狙ってるのはnodejsとobjcの後釜だったろ(過去形
Javaの後釜はkotlinに任せた
0150デフォルトの名無しさん (ワッチョイ bc42-8n5s)2016/11/06(日) 00:12:40.09ID:ezrbx1w50
Kotlinはガチガチ感が足りない
0151デフォルトの名無しさん (ワッチョイ d0c9-dKGq)2016/11/06(日) 01:05:29.16ID:vkxhzVrT0
アイデアパクるのが恥なら恥のない言語なんて無い
0152デフォルトの名無しさん (ワッチョイ 718f-DGmA)2016/11/06(日) 10:14:23.57ID:4L6+G/1b0
むしろいい仕様は全然パクりまくっていいと思う
0153デフォルトの名無しさん (ワッチョイ bc42-8n5s)2016/11/06(日) 17:14:18.09ID:WBLFwz5S0
おかげで最近は似たり寄ったりのが乱立することに
0154デフォルトの名無しさん (ワッチョイ d0c9-X2H6)2016/11/06(日) 20:15:09.34ID:v3i1/z/a0
>>153
そんなに似てるのあるかね?
0155デフォルトの名無しさん (ササクッテロリ Spbd-DGmA)2016/11/06(日) 21:12:20.71ID:OgnHco5Ep
PerlとPythonとRubyとか

多少似たり寄ったりでも、それぞれ特化した特徴持ってるるけどな
Swiftの特徴はモダンな文法
0156デフォルトの名無しさん (ワッチョイ 1c7b-LXwf)2016/11/06(日) 22:29:55.94ID:/loPCIEU0
最近って
もう20年位経ってなかったっけ
0157デフォルトの名無しさん (ワッチョイ 1c7b-LXwf)2016/11/06(日) 22:33:39.44ID:/loPCIEU0
ああすまん別人のレスだった
0158デフォルトの名無しさん (ワッチョイ 91c9-GVdM)2016/11/07(月) 04:20:28.13ID:EaPQMBZD0
perlとrubyは似てるけど
それらとpythonは似ても似つかない
0159デフォルトの名無しさん (ワッチョイ 7162-dKGq)2016/11/07(月) 22:48:12.47ID:pS9bGIHw0
モダン()って何ですか?
0160デフォルトの名無しさん (ワッチョイ e6d4-6WlR)2016/11/07(月) 23:29:17.01ID:7sl1kZEM0
19世紀末から20世紀頭にかけた近代的な文化や思想のことだよ。
0161デフォルトの名無しさん (ワッチョイ d0c9-dKGq)2016/11/07(月) 23:44:55.11ID:HJ3poSG10
ポストモダン言語
0162デフォルトの名無しさん (ワッチョイ 653c-8n5s)2016/11/08(火) 00:12:18.18ID:1VnvhNy/0
ジョブズは死んだんじゃなくて19世紀にワープしたんだよな
そこで手に入れた言語がSwift
これで38世紀に起きる世界の破滅を救う必要がある
0163デフォルトの名無しさん (スプッッ Sd2d-DGmA)2016/11/08(火) 07:59:40.41ID:rLbbfQNtd
ふーん
0164デフォルトの名無しさん (スプッッ Sd78-m5qj)2016/11/08(火) 09:57:02.25ID:X5dOVA43d
swiftのrubyっぽい書き方は好き
ジェネリクスもc++の複雑怪奇さよりはまだ理解しやすいと思う
あとはperl並みの柔軟な正規表現処理をパクってくれれば、俺的にはかなり満足

言語では無いがXCodeで未だにswiftのリファクタリングアシスト出来ないってどういう事?
もっと本気出せ!Apple
0165デフォルトの名無しさん (ワッチョイ 718f-DGmA)2016/11/08(火) 10:38:31.86ID:afLUgDEA0
まぁobjcよりはDSLが書きやすい言語ではあるね。rxSwiftとか触った感想
0166デフォルトの名無しさん (ワッチョイ 5e93-m5qj)2016/11/09(水) 23:28:51.38ID:LFfTZCZj0
>>99
古い話を蒸し返して悪い

>for eachで+2づつイテレートしたらC-style forより1,000倍遅かったのにはびっくりしたわ、+1づつなら同程度速度だったけどさ


ソース見てないから想像しかできないけど

for文だけで1000倍遅いと言うのはやっぱり変

速度計測が正しいと仮定して
+1で同速だから+2で1000倍違うのであればコンパイラの最適化問題の可能性が高いと思う

+2にするためにfor eachの中だけでifとか3項演算子とかの条件判断してんじゃ無いかな?

定数や単純な計算に展開できるようなfor文だったら
最適化が崩れるだけで1000倍くらいは軽く違ってくる

もちろん最適化しやすいかどうかは言語仕様の重要なポイントだけど
+2のc style forと比較すべきは

対象データ配列.lazy.filter.foreach
とか
for in stride
とかじゃないかな?
0167デフォルトの名無しさん (ワッチョイ 93c9-U0zX)2016/11/10(木) 00:35:29.26ID:il4z8U8D0
jump 1984
0168デフォルトの名無しさん (ワッチョイ 033c-teht)2016/11/10(木) 01:04:16.66ID:CuQR47GV0
wow! swift is very cool language!!
0169デフォルトの名無しさん (ワッチョイ 033c-teht)2016/11/10(木) 09:31:14.04ID:R/sSrOg00
言語仕様の変化がswift(迅速)
0170デフォルトの名無しさん (ササクッテロリ Sp2f-PwKp)2016/11/10(木) 13:40:21.88ID:rv8wSLjJp
>>166
自分でコード書いて、ほら+2でも早いじゃんって証明しよう
0171デフォルトの名無しさん (ワッチョイ 033c-teht)2016/11/10(木) 15:15:22.92ID:R/sSrOg00
swift 2.2
http://swiftlang.ng.bluemix.net/#/repl/58240e6cdee52b574593575a
c-style   : 98ms : 25000000
range    : 1287ms : 25000000
c-style(emp): 114ms : 0
range(emp) : 1328ms : 0

swift 3
http://swiftlang.ng.bluemix.net/#/repl/58240f8bdee52b574593575d
range   : 1906ms : 25000000
range(emp) : 1922ms : 0

こんな感じ?
ちゃんと計測になってるか分からないけど
0172デフォルトの名無しさん (スププ Sd1f-9MLS)2016/11/10(木) 18:17:20.39ID:ftL23tGyd
>>171
さんきゅ、これで検証できる

手元のmacMiniでmacOS用コンソールアプリとして実行して見た
手打ちコピペなのでカウント表示は省略

リリースモード(-O)
c-style : 12ms
range : 8ms
c-style(emp):12ms
range(emp): 8ms

デバッグモード(-Onone)
c-style : 122ms
range : 1506ms
c-style(emp):122ms
range(emp): 1485ms

実行時間は実行の度に10%程度揺らぐが、全体的に増減する
(バックグラウンドプロセスの影響?)

同じく時間計測が正しくできてるかどうかは自信なし
あくまでも話のネタとして
0173デフォルトの名無しさん (ワッチョイ 27c9-dJcJ)2016/11/10(木) 20:10:35.31ID:axPg+CzB0
どうでもいいけど range といわれると for i in 0..<n { } を想像する
0174デフォルトの名無しさん (ワッチョイ 0f93-9MLS)2016/11/11(金) 06:58:10.97ID:VxmMYonc0
(最近2chをStackOverflowと間違えてる人達がいるんじゃないかと思うんだ)
0175デフォルトの名無しさん (ワッチョイ 6b17-9MLS)2016/11/11(金) 12:14:57.51ID:hH3mlRl+0
専門板はコード載せたり質問したり普通だと思うがな
0176デフォルトの名無しさん (スププ Sd1f-9MLS)2016/11/11(金) 12:24:16.45ID:IRS0wJtrd
>>172
やっぱり納得できん!
コンパイラかOSにごまかされてるかもしれない

カウント値を2倍10倍にして見た、、、
計測値も相応に増えてる→OK!

うちの手元環境では今回のコードを最適化しててもループも回ってるようだし計測も出来ているようだ


でもNSDateって汎用時計で計測用じゃないから最適化バリアとか張ってなさそう
いつか嘘を付かれるかも


どうやって実行時間測るのが安全なんだろう?
XCTestのmeasurePerformanceBlockあたりかな?
0177デフォルトの名無しさん (ササクッテロラ Sp2f-PwKp)2016/11/11(金) 14:13:36.15ID:Vk/i9jiNp
timeコマンドでも使えば?
libSwift.soの読み込み分も加算されると思うけども
ObjCとSwiftを比較しないならまぁ条件は一緒だろ
0178デフォルトの名無しさん (ワッチョイ 0f93-9MLS)2016/11/12(土) 09:36:12.28ID:s1ZCIfoi0
乙おつ

c-style forを使いたい為にswift2.xに留まる程の速度差は無いてことだな
むしろ新しい書き方の方が速いこともある

ループ内でカウンタをいじらないなら
単純にfor in strideに置き換えて構わない
0179デフォルトの名無しさん (ワッチョイ 3b53-yNdZ)2016/11/12(土) 11:08:55.66ID:lF8fQe3F0
あのさ、マジで応用アプリケーションのレイヤーでforが遅いとかifが遅いとか鈍臭い話するの止めてくれるか?
話のタネとしてもどう反応して良いかわからん。お前馬鹿か?って反応して良いならいくらでも言えば良いがそうじゃないんだろ?
SwiftでOS書くつもりか?
forやifで悩むよりさっさとアプリ書き上げて画面突っかかるところをInstrumentsで解析してピンポイントにチューニングしてろや
基本ソフト書くレイヤーの特権階級だけが意識してれば良い事なんだよそれは
なんのためにその人たちがチューニングして生産性あげてるのか全くわからなくなる
0180デフォルトの名無しさん (ワッチョイ 3b53-yNdZ)2016/11/12(土) 11:13:02.84ID:lF8fQe3F0
×生産性あげてる
○抽象度を上げて生産性を上げてる
微妙に自分の言いたい事が足りなかったので補足
0181デフォルトの名無しさん (ササクッテロリ Sp2f-PwKp)2016/11/12(土) 11:31:47.24ID:txrMIHhIp
>>179
フフってなった
そういう反応すればいいんじゃないかな

画面のカクツキとかは、アニメーションが足りてないせいかな
Apple(iOS)は昔からアニメーション等々で性能悪を誤魔化す手法を模索してきたんだから
Swiftでも多少のデメリットも誤魔化す手法をAppleから提示して欲しい
0182デフォルトの名無しさん (ワッチョイ 6b17-9MLS)2016/11/12(土) 12:19:42.46ID:9t6wr9zS0
ここはアプリ開発スレじゃなくてプログラミング言語のスレだから下位レイヤーの話をあれこれ話し合ってもいいと思うけどな
0183デフォルトの名無しさん (ワッチョイ 3b53-yNdZ)2016/11/12(土) 19:17:05.99ID:lF8fQe3F0
応用アプリケーションのレイヤーで意識するべき事もわかってないくせに「先輩、cスタイルのfor文って実は遅いんですよ!」とか言っちゃって危険人物扱いされる人間が出ないように釘刺したかったんや
上で奇妙な事言ってる奴がいるがスルーするぞ

若い奴は上の頭でっかちの話は気にしないでとにかく手を動かせ
んでInstrumentsで発見した知見を蓄えろ。意外とあのオブジェクトのあのメソッドは遅いとか出てくるはずや
上で出ているfor文が問題になるケースは万に一つにもありえんと断言できる惑わされず手を動かせ
メソッド名とかこういうのの揚げ足取りが強くて手が動かせないとかは絶対に不毛だからないようにしろ
0184デフォルトの名無しさん (ササクッテロラ Sp2f-PwKp)2016/11/12(土) 20:36:12.38ID:89uv6TPmp
数行の検証コードも書けないのに、日本語は長文だなw
長いから3行でおk
0185デフォルトの名無しさん (ワッチョイ a766-9MLS)2016/11/12(土) 21:13:25.65ID:VlXDpHXF0
>Apple(iOS)は昔からアニメーション等々で性能悪を誤魔化す手法を模索してきた
とか言っちゃってる人はこちらの世界には向いてないから
あのボタン押しても無反応で、一秒ぐらい待って「???」ともう一回ボタン押すと
キャッシュされた動作でいきなり2つ画面が進んじゃったりする
日本企業のクソアプリを作ったあげく、
なぜ会社の業績が傾いてるのかわからない重役共々路頭に迷ってればいいよ。
0186デフォルトの名無しさん (ワッチョイ 27c9-WFrU)2016/11/13(日) 00:18:33.65ID:CUrdK5Xi0
>>182
まぁそうだが、ただswiftって言語としてまだまだ新しすぎるんだよね。
そりゃバージョン上がればいろいろ変わるさと正直思う。
0187デフォルトの名無しさん (ワッチョイ 0f93-9MLS)2016/11/13(日) 03:15:10.73ID:gdSsF4/Y0
>>179
そんなあなたに詰めswift
コードで語るスレらしいからお気に召すと思う
0188デフォルトの名無しさん (スププ Sd1f-9MLS)2016/11/13(日) 16:47:18.61ID:d2AUcSb3d
>>179
>forやifで悩むよりさっさとアプリ書き上げて画面突っかかるところをInstrumentsで解析してピンポイントにチューニングしてろや

>>183
>応用アプリケーションのレイヤーで意識するべき事もわかってないくせに「先輩、cスタイルのfor文って実は遅いんですよ!」とか言っちゃって危険人物扱いされる人間が出ないように釘刺したかったんや


この話題ってもともとそう言う話だったと思うよ?

for each は1000倍遅い、とか言う人に対して
for文単体の速度なんて測れないし、気にする意味がない
って、話が出て
その流れでコードを書いて公開する人とか、それを条件変えるだけで簡単に結果がひっくり返るよとか言うのを公開する人が出てきた

少なくとも実測値を出してるような人たちは
1000倍遅いといった人をおちょくるために、、、、
いや、for文の速度を気にするなんて馬鹿らしい事を示すためにあえて書いてるように見えるよ
0189デフォルトの名無しさん (ワッチョイ 238c-q8zF)2016/11/13(日) 16:58:23.64ID:wcHwfNTy0
コード、性能についての議論じゃなく兎角煽れればいいって荒らしはいい加減うざいわ
0190デフォルトの名無しさん (ワッチョイ 93f8-9MLS)2016/11/13(日) 17:13:24.59ID:ZZzhDTzs0
アプリケーションプログラマーが細かい速さのこととか気にすべきでないと言うのは俺も同意見

でも、アプリケーションプログラマーであっても(あるからこそ)、OSやコンパイラは全力でユーザー(含:プログラマー)を騙しに来るというのは覚えておいて欲しいと思ってる。


「USBメモリへの書き込み速度測って見ました」
「どれどれ?物理最大速度の100倍以上出てるじゃないか!
おかしいと思わない?OSのIOキャッシュ勉強してからやり直そう」

「このデバッグプリント不要だから外しといてね」
「でも、外すとクラッシュするんです」
「よし、集中レビューしよう。そう言うのは放置しちゃダメ」
「えと、無効な変数参照してました」

「動作を見るためにウェイト入れたんですがそれでも速すぎて現象がわかりません」
「、、、ああ、空ループじゃん。コンパイラに無視されるからウェイトにならないよ」


みたいな、冗談のような本当の話
0191デフォルトの名無しさん (ワッチョイ dfec-dJcJ)2016/11/13(日) 18:13:35.45ID:ckhnbYpT0
わざわざクソ文法つくるからこういうしょーもない話が出てくんだろ...
ObjCでおk
■ このスレッドは過去ログ倉庫に格納されています