質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

3238閲覧

[Swift3] Playgroundでの処理が終わらない

taylor

総合スコア37

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/09/21 04:56

###前提・実現したいこと
Playgroundで、配列から値を取り出し新しい配列を作る処理を行っています。

取り出す元の配列は[[Any]]で、中身の配列の個数は1800個、その1配列につき7つのDoubleと1つのStringが入っています。

新しく作る配列は[[Double]]になります。

###発生している問題
Runしてから1時間ほど経ちますが、まだ処理が終わりません。

###質問したいこと
初心者で恐縮なのですが、このくらいのサイズの配列の処理にはこのくらい時間がかかるものなのでしょうか?(高級言語で一般的に/Swiftの場合)
また、こういう大きなサイズの配列の処理をしたい場合に、適切な方法はありますでしょうか?

###ソースコード

Swift

1let array1:[[Any]] = [[12345.0, 1234.5678901234, 1234.5678901234, 12345.0, 1.2, 12345.0, 0.12345678901234, "ここだけString(ここは特に利用しない)"],...]//[]×1800個 2 3var array2 = [[Double]]() 4 5for i in 0...(array1.count - 3){ 6 let a = array1[i][3] as? Double 7 let b = array1[i][4] as? Double 8 let c = array1[i][5] as? Double 9 let d = array1[i][6] as? Double 10 let e = array1[i][0] as? Double 11 let f = array1[i + 1][0] as? Double 12 let g = array1[i + 2][0] as? Double 13 14 if let a = a,let b = b,let c = c,let d = d,let e = e,let f = f,let g = g{ 15 let hoge = a + b + c + d 16 array2.append([hoge,e,f,g]) 17 } 18} 19 20print(array2)

###補足情報(言語/FW/ツール等のバージョンなど)
Swift3, Xcode8.3.3
MacBook Pro Mid2015 ( 2.8GHz Intel Core i7(4 cores), メモリ:16GB)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2017/09/21 04:59 編集

そもそも動いているのでしょうか?数を減らせばすぐに終わるのですか?
taylor

2017/09/21 05:10

一応、Playgroundの上部は「Running」となっており、輪っかもくるくるまわっています。また、アクティビティモニタを確認すると、「SourceKitService」と「lldb-rpc-server」がともに約100%になっています(これがなんのことかはわかりませんが...)。Macはとても熱いです。
taylor

2017/09/21 06:13

>数を減らせばすぐに終わるのですか? 失礼しました、この部分見落としていました。中の配列を5個でやってみましたが大丈夫です。
MasakiHori

2017/09/21 07:22

playgroundは右側の情報(値やN times)を表示するのに相当のリソースを食ってるのでこういう用途には向いてないと思います
taylor

2017/09/21 07:49

そうなんですね、知りませんでした、ありがとうございます!
guest

回答1

0

ベストアンサー

Playgroundは重いのでほとんど使うことがないのですが、こちらでも試してみました。
確かに重いですがインタプリタなのでしょうがないかな?というレベルです。
質問のコードは1分程度で終わりました。

ただ、何度か動かなかったことがありました。(輪っかは回っている状態)
動いていれば右側のエリアに「○○ times」表示されますので、何も表示されていないのであれば動いていない状態だと思います。


UIKitなどを使わないときに限られますが、簡単なテストにはIBM Swift Sandboxを使っています。
他にはpaiza.ioにもSwiftはありますね。

投稿2017/09/21 06:31

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2017/09/21 06:33

MacはCore i5@2.6GHz, メモリ16GBのminiです。
taylor

2017/09/21 07:52

なるほど、MasakiHoriさんの回答と合わせてよく理解できました。Playgroundが重いんですね。教えて頂いたIBM Sandboxとpaiza.ioを試してみます、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問