Mengapa Illustrator melambat ke kecepatan 2% ketika itu di latar belakang?

8

Saya secara teratur menjalankan skrip .jsx di Adobe Illustrator yang menyimpan banyak file dalam format tertentu.

  • sementara Illustrator adalah aplikasi aktif, menjalankan skrip pada 5 file membutuhkan 23 detik .

  • Ketika Illustrator bukan aplikasi utama, menjalankan skrip pada 5 file membutuhkan waktu lebih dari 5 menit .

  • Menurut Activity Monitor , Illustrator menggunakan sekitar 75% dari CPU ketika di latar depan tetapi dibatasi menjadi kurang dari 2% ketika di latar belakang .

  • Menurut Activity Monitor, App Nap tidak digunakan .

Mengapa ini terjadi, dan adakah cara untuk mengubahnya?

Saya ingin dapat melakukan tugas-tugas lain sambil menunggu Illustrator. Seperti berdiri, saya berkewajiban untuk menjaga Illustrator di latar depan.

Beberapa hal yang telah saya coba : Saya tahu itu

sudo sysctl debug.lowpri_throttle_enabled=0

bekerja untuk mempercepat backup Time Machine, jadi saya pikir mungkin membantu dalam hal ini. Itu tidak berpengaruh .

Saya juga mencoba menonaktifkan App Nap:

defaults write NSGlobalDomain NSAppSleepDisabled -bool YES

Itu tidak berpengaruh .

Saya mencoba TinkerTool , tetapi saya percaya itu hanya GUI untuk mengubah pengaturan lowpri_throttle_enabled . Itu tidak berpengaruh .

Andrew Swift
sumber

Jawaban:

6

Ini tampaknya merupakan masalah Adobe; khusus, basis kode untuk AI tidak multi-threaded.

Saya dapat menemukan diskusi di forum Adobe yang membahas masalah persis Anda - Jadikan Illustrator multi utas di CPU

Performa ilustrator mengerikan, lambat dan lamban sama sekali kecuali operasi yang paling dasar. Itu terikat hanya satu thread cpu yang konyol sekarang di zaman multi-core dan multi-thread CPU dan sudah seperti ini selama bertahun-tahun. Itu tidak dapat menangani tugas latar belakang dan benar-benar keluar dari paritas dalam fungsi dan kinerja dengan perangkat lunak Adobe lainnya seperti Photoshop dan inDesign.

Tekankan milikku

Sayangnya, jika kode tidak dapat mendukung operasi latar belakang CPU, tidak ada yang dapat Anda lakukan dari perspektif Mac Anda untuk mempercepat. Karena para pengguna di semua forum (begrudgingly) menerima, satu-satunya solusi adalah menunggu pembaruan dari Adobe.

Kenapa begitu?

Secara umum, aplikasi di latar belakang "dijeda" - secara teknis, mereka diberikan prioritas rendah . Artinya, eksekusi berhenti sampai CPU memiliki kesempatan untuk mengeksekusi beberapa perintah lagi; biasanya selama operasi pengambilan IO. Mengelola proses ini disebut "Penjadwalan CPU" dan merupakan sesuatu yang ditangani oleh perangkat keras untuk Anda - aplikasi harus mengizinkannya (melepaskan kendali).

Kesalahpahaman umum tentang multi-threading adalah bahwa segala sesuatu berjalan lebih cepat. Ini bukan masalahnya, hanya saja banyak hal terjadi secara simultan membuat penggunaan sumber daya CPU menjadi lebih baik. Ini seperti memiliki satu taksi (angkutan orang) yang mengantar orang antara bandara dan pusat konferensi versus empat yang melakukan angkutan. Mereka semua berjalan dengan kecepatan yang sama, hanya saja sekarang Anda bergerak lebih banyak.

Aplikasi yang "multi-thread mampu" memungkinkan perangkat keras untuk mengelola dan menjadwalkan waktu CPU dan menjadi bahwa ada lebih banyak CPU yang dapat dialokasikan, pekerjaan latar belakang mendapatkan lebih banyak sumber daya untuk menyelesaikan pekerjaan.

Allan
sumber
1
Bisakah Anda jelaskan secara singkat mengapa aplikasi non-multi-threaded lebih lambat di latar belakang? Imajinasi saya mengusulkan: ada N utas yang berjalan pada satu waktu, dan Mac secara otomatis menggunakan 85% sumber dayanya pada utas yang menghadap pengguna "utama" dan 15% dibagi untuk semua utas lainnya. Saya tidak tahu apa-apa tentang ini, saya hanya mengada-ada.
Andrew Swift
1
Secara umum, aplikasi berulir tunggal "dijeda" di latar belakang dan "dijalankan" di latar depan. Untuk menjaga agar aplikasi tetap hidup saat di latar belakang, itu akan "polling" CPU untuk sementara waktu dan memanggil beberapa fungsi untuk melakukan sesuatu (misalnya penyimpanan file Anda). Ini bukan tentang "mengalokasikan CPU" per se. Dari membaca forum, orang-orang dengan inti Mac Pros 8 dan 16 hanya melihat satu inti yang digunakan ketika menjalankan AI yang berarti tidak memanfaatkan sumber daya penuh.
Allan
1
Jika Anda ingin memperbarui jawaban Anda dengan deskripsi ini, dengan senang hati saya akan memilihnya sebagai benar.
Andrew Swift
1
@ Allan Wow! Saya tidak akan pernah menduga bahwa Adobe Illustrator tidak mendukung multi-threading! Bagi saya sepertinya ini adalah kandidat untuk multi-threading. Kemudian lagi, butuh Microsoft lama untuk mendukung multi-threading dengan Excel (kandidat lain yang jelas), dan bahkan sekarang implementasinya tidak terlalu baik. Tidak diragukan lagi seiring berjalannya waktu, semakin banyak aplikasi akan mendukungnya.
Monomeeth
1
@ Monomeeth - Saya setuju. Saya tidak bisa percaya bahwa AI begitu jauh di belakang kurva dev. Satu hal yang saya baca di forum adalah para pengguna yang mengeluh bahwa CC pada dasarnya akan memungkinkan Adobe untuk mengumpulkan pendapatan dan tidak memperbaiki produk. Dengan Apple pindah ke CPU mereka sendiri dan mematikan dukungan untuk aplikasi 32bit, Adobe mungkin terpaksa memperbaiki keadaan.
Allan
0

Jawaban ini dari Mordy Golding , Manajer Produk untuk Adobe Illustrator (2001-2004), di Quora :

Grafik vektor memiliki kelebihan dan kekurangan. Sayangnya, ini adalah salah satu kelemahannya. Itu karena grafik vektor digambar dalam susunan linear.

Ambil satu contoh sederhana - ambil satu layer dengan satu persegi panjang. Gandakan layer itu 100 kali. Meskipun hanya lapisan atas yang terlihat, ilustrator menggambar setiap persegi panjang dari lapisan paling bawah ke atas. Illustrator tidak dapat menggambar layer 50 sampai 49 sebelumnya selesai. Ini tidak seperti photoshop yang hanya peduli dengan piksel mana yang pada akhirnya terlihat.

Memperluas konsep lebih lanjut. Katakanlah Anda memiliki 4 core. Anda dapat mengambil file photoshop dan membaginya menjadi kisi-kisi 4 area dan memberi tahu setiap inti untuk menggambar 1 area - semuanya pada waktu yang bersamaan. Itu karena piksel dalam satu kotak tidak memiliki dampak apa pun pada piksel di area kotak lain. Karena Anda dapat membagi foto menjadi beberapa area independen, Anda dapat menetapkan beberapa core untuk membuat setiap area secara bersamaan.

Namun, dalam ilustrator, setiap objek digambar sesuai urutan yang muncul dalam susun susun. Jadi jika saya membagi gambar menjadi kisi-kisi empat, saya masih harus membangun semua objek seni dengan objek tidak peduli apa grid itu. Artinya semua 4 core masih harus menunggu sampai semua objek digambar sebelum rendering.

Artinya, hanya beberapa jenis fungsi yang dapat mendukung fungsionalitas multi-core di Illustrator. Misalnya, jika Anda mencetak file besar, ilustrator akan menyerahkan spooling cetak ke inti lain dan mengembalikan Anda kembali ke dokumen Anda untuk terus bekerja segera. Tapi sayangnya, ini tidak mungkin untuk mempercepat tugas linier seperti menggambar / merender seni.

Andrew Swift
sumber