Apakah hanya saya atau Xcode 6 (6.0.1) dengan Swift yang tampaknya sangat lambat saat Anda mengetik kode, terutama dengan pelengkapan otomatis?
Kelas Objective-C normal, bahkan jika di dalam proyek Swift, bekerja hampir sama seperti sebelumnya, jadi Swift yang membunuhnya.
Apakah ada orang lain yang mengalami ketidaknyamanan yang sama? Apakah Anda tahu cara meningkatkan kinerja?
- Saya mencoba bermain dengan beberapa pengaturan tetapi tidak berhasil.
- Saya juga tentu saja mencoba me-restart Xcode dan komputer tidak berhasil.
- Tidak ada aplikasi berat lainnya yang terbuka.
Saya menggunakan Macbook Pro Pertengahan 2009 (2,26 GHz Intel Core 2 Duo) dengan RAM 8GB dan SSD HD, yang sama sekali bukan yang terbaru, tapi masih belum lengkap.
Ini memalukan karena saya sangat bersemangat untuk mulai menggunakan Swift dan sekarang sangat tidak tertahankan.
Pikiran / tips?
Jawaban:
Ini adalah solusi sementara, tetapi bekerja dengan sangat baik.
Di bawah skrip menggunakan aplikasi Editor Skrip.
Alternatifnya, Anda dapat membuat alias untuk terminal Anda seperti ini:
Anda dapat menambahkannya ke Anda
~/.bash_profile
dan kemudian mengetikxcodeclean
pada baris perintah setiap kali Anda ingin menghapus kedua folder tersebut.sumber
Saya juga mengalami 100% + CPU saat mengetik beberapa kode "sederhana". Beberapa trik kecil untuk membuat pengurai cepat lebih cepat dengan cara Anda menyusun kode.
Jangan gunakan concatinator "+" dalam string. Bagi saya ini memicu kelambatan dengan sangat cepat. Setiap "+" baru membawa parser ke crawl, dan kode tersebut harus reparse setiap kali Anda menambahkan karakter baru di suatu tempat di badan fungsi Anda.
Dari pada:
Gunakan sintaks-template yang tampaknya jauh lebih efisien untuk diurai dengan cepat:
Dengan cara ini pada dasarnya saya tidak melihat batasan dalam strlen dengan inline vars "\ (*)".
Jika Anda memiliki perhitungan, yang menggunakan + / * - maka bagi menjadi bagian-bagian yang lebih kecil.
Dari pada:
menggunakan:
Ini mungkin terlihat kurang efisien, tetapi pengurai cepat jauh lebih cepat dengan cara ini. Beberapa rumus tidak dapat dikompilasi, jika memiliki banyak operasi, meskipun secara matematis benar.
Jika Anda memiliki beberapa kalkulasi yang kompleks, masukkan ke dalam func. Dengan cara ini pengurai dapat menguraikannya sekali dan tidak harus mengulanginya setiap kali Anda mengubah sesuatu di badan fungsi Anda.
Karena jika Anda memiliki kalkulasi di badan fungsi Anda, maka parser swift akan memeriksanya setiap saat jika jenis, sintaks, dll. Masih benar. Jika garis berubah di atas kalkulasi, maka beberapa vars di dalam kalkulasi / rumus Anda mungkin telah berubah. Jika Anda meletakkannya di fungsi eksternal maka itu akan divalidasi sekali dan swift senang bahwa itu akan benar dan tidak mengulanginya terus-menerus, yang menyebabkan penggunaan CPU yang tinggi.
Dengan cara ini saya mendapatkan dari 100% pada setiap penekanan tombol ke CPU rendah saat mengetik. Misalnya, 3 baris ini yang diletakkan sejajar di badan fungsi Anda dapat membuat swiftparser merayap.
tetapi jika saya memasukkannya ke dalam func dan memanggilnya nanti, swiftparser jauh lebih cepat
Swift dan XCode 6.1 masih sangat bermasalah, tetapi jika Anda mengikuti trik sederhana ini, kode pengeditan menjadi dapat diterima lagi. Saya lebih suka cepat, karena menghapus file .h dan menggunakan sintaks yang jauh lebih bersih. Masih ada banyak tipe-casting yang dibutuhkan seperti "myVar as AnyObject", tapi itu kejahatan yang lebih kecil dibandingkan dengan struktur dan sintaks proyek objektif-c yang kompleks.
Juga pengalaman lain, saya mencoba SpriteKit, yang menyenangkan untuk digunakan, tetapi cukup tidak efisien jika Anda tidak memerlukan pengecatan ulang konstan pada 60fps. Menggunakan CALayer lama jauh lebih baik untuk CPU jika "sprite" Anda tidak sering berubah. Jika Anda tidak mengubah. Konten lapisan maka CPU pada dasarnya tidak aktif, tetapi jika Anda memiliki aplikasi SpriteKit yang berjalan di latar belakang, maka pemutaran video di aplikasi lain mungkin mulai tersendat karena loop pembaruan 60fps yang tidak terbatas.
Kadang-kadang xcode menunjukkan kesalahan ganjil saat kompilasi, kemudian masuk ke menu "Produk> Bersihkan" dan kompilasi lagi, tampaknya merupakan implementasi cache yang bermasalah.
Cara hebat lainnya untuk meningkatkan penguraian ketika xcode macet dengan kode Anda disebutkan di pos stackoverflow lain di sini . Pada dasarnya Anda menyalin semua konten dari file .swift Anda ke editor eksternal, dan kemudian berfungsi dengan fungsi menyalinnya kembali dan melihat di mana kemacetan Anda. Ini benar-benar membantu saya mendapatkan xcode ke kecepatan yang wajar lagi, setelah proyek saya menjadi gila dengan 100% CPU. saat menyalin kode Anda kembali, Anda dapat memfaktorkan ulang dan mencoba untuk menjaga agar fungsi-badan Anda tetap pendek dan fungsi / formulars / ekspresi sederhana (atau terbagi dalam beberapa baris).
sumber
Pelengkapan otomatis rusak sejak Xcode 4. Hingga Apple memutuskan untuk memperbaiki bug berusia 2 tahun ini, satu-satunya solusi, sayangnya, adalah MENONAKTIFKAN pelengkapan kode pada preferensi XCode (opsi pertama dari gambar di bawah).
Anda dapat terus menikmati penyelesaian secara manual dengan mengetik
CTRL space
atauESC
saat Anda membutuhkannya.Ini adalah satu-satunya solusi yang bekerja setiap saat untuk 100% kasus.
Hal lain yang saya temukan baru-baru ini adalah: jika Anda menggunakan plugin di Xcode, jangan. Hapus semuanya. Mereka memperburuk masalah.
sumber
Apakah Anda menggunakan Spotify? Saya menginstal Yosemite GM dengan Xcode 6.1 GM pada iMac pertengahan 2009 (2.66Ghz) mengalami masalah yang sama. Saya menemukan bahwa proses yang disebut "SpotifyWebHelper" selalu ditandai merah sebagai tidak merespons, jadi saya menonaktifkan opsi "mulai dari web" di spotify dan sekarang Xcode tampaknya berjalan jauh lebih baik.
sumber
Saya menemukan bahwa biasanya terjadi ketika Anda:
Kasus kedua tampaknya diperbaiki di salah satu rilis xcode terbaru. Contoh: Saya mendefinisikan 2 operator khusus <&&> dan <||>, dan digunakan dalam ekspresi seperti
a <&&> b <&&> c <||> d
. Memisahkan menjadi beberapa baris menyelesaikan masalah:Saya harap kasus Anda tercakup oleh salah satu dari 2 di atas ... silakan kirim komentar untuk kasus mana pun
sumber
Saya memiliki masalah yang sama bahkan di Xcode 6.3
Semua ini terjadi bahkan dalam proyek yang relatif kecil. Saya mencoba semua perbaikan yang dapat saya temukan:
Tak satu pun dari ini benar-benar membantu dalam proyek saya.
Apa yang sebenarnya memecahkan masalah saya adalah:
Sekarang saya hampir tidak menggunakan CPU, penggunaan memori rendah, dan penyelesaian cukup cepat.
sumber
Secara umum, memindahkan folder cache (DerivedData) ke drive SSD (khususnya dalam kasus saya - penyimpanan luar yang terhubung ke pintu keluar petir) telah secara dramatis meningkatkan kinerja Xcode saya .. Waktu kompilasi dan pertanyaan umum seputar aplikasi sekitar 10 kali lebih cepat .. Juga memindahkan seluruh folder git ke SSD, yang secara dramatis meningkatkan kinerja git.
sumber
Itu menyakitkan sampai XCode 7.2.
Apple memperbaikinya di XCode 7.3 dan sekarang berfungsi seperti pesona. Ini super cepat dan jauh lebih kuat karena tampaknya berfungsi seperti pencarian file yang tidak jelas: Anda tidak harus benar-benar mengetik awal yang tepat dari metode / properti agar dapat muncul dalam daftar proposisi.
sumber
Menciutkan semua metode sedikit membantu.
command-alt-shift-left arrow akan melakukan trik ...
Untuk melipat / membuka metode saat ini atau jika struktur menggunakan:
Lipat: panah kiri-perintah-perintah
Unfold: command-alt-right arrow
sumber
SourceKitService
juga agak canggung untuk menangani komentar dalam kode dan komentar yang disematkan juga memperlambatnya.jadi jika Anda mampu menghapus gumpalan besar dari komentar tersemat seperti ini:
itu pasti bisa membantu juga.
CATATAN: dalam kasus saya Xcode 7.3.1 (7D1014) saya benar-benar memblokir saya mengetik surat apa pun ketika file tersebut memiliki sekitar 700 baris komentar dengan komentar yang disematkan. awalnya saya menghapus blok itu dari
.swift
file itu dan Xcode menjadi hidup kembali. Saya mencoba menambahkan komentar saya kembali bagian demi bagian dengan menghapus komentar yang disematkan, itu masih lebih lambat dari biasanya tetapi itu menunjukkan kinerja yang jauh lebih baik jika tidak ada komentar yang disematkan.sumber
Saya memiliki masalah yang sama di mana mengetik tertinggal di kelas tertentu dan ternyata itu
/* Long multiline comments */
memperlambat pengetikan.
sumber