Tại sao Illustrator được điều chỉnh tới 2% tốc độ khi nó ở chế độ nền?


8

Tôi thường xuyên chạy tập lệnh .jsx trong Adobe Illustrator để lưu một loạt các tệp ở định dạng cụ thể.

  • trong khi Illustrator là ứng dụng đang hoạt động, việc chạy tập lệnh trên 5 tệp mất 23 giây .

  • Khi Illustrator không phải là ứng dụng quan trọng nhất, việc chạy tập lệnh trên 5 tệp mất hơn 5 phút .

  • Theo Activity Monitor , Illustrator đang sử dụng khoảng 75% CPU khi ở phía trước nhưng được điều chỉnh xuống dưới 2% khi ở chế độ nền .

  • Theo Activity Monitor, App Nap không được sử dụng .

Tại sao điều này xảy ra, và có cách nào để thay đổi nó?

Tôi muốn có thể thực hiện các nhiệm vụ khác trong khi chờ Illustrator. Khi nó đứng, tôi bắt buộc phải giữ Illustrator ở phía trước.

Một số điều tôi đã thử : Tôi biết rằng

sudo sysctl debug.lowpri_throttle_enabled=0

đã làm việc để tăng tốc sao lưu Time Machine, vì vậy tôi có thể giúp trong trường hợp này. Nó không có tác dụng .

Tôi cũng đã thử tắt ứng dụng Nap:

defaults write NSGlobalDomain NSAppSleepDisabled -bool YES

Nó không có tác dụng .

Tôi đã thử TinkerTool , nhưng tôi tin rằng đó chỉ là GUI để thay đổi cài đặt lowpri_thrption_enables . Nó không có tác dụng .

Câu trả lời:


6

Đây dường như là một vấn đề của Adobe; cụ thể, cơ sở mã cho AI không phải là đa luồng.

Tôi đã có thể tìm thấy một cuộc thảo luận trong các diễn đàn Adobe giải quyết vấn đề chính xác của bạn - Tạo Illustrator đa luồng trên CPU

Hiệu suất của Illustrator là khủng khiếp, chậm và chậm, nhưng các thao tác cơ bản nhất. Nó bị ràng buộc chỉ với một luồng cpu duy nhất hiện đang vô lý trong thời đại của CPU đa lõi và đa luồng và nó đã diễn ra như vậy trong nhiều năm. Nó không thể xử lý các tác vụ nền và hoàn toàn không tương đương về chức năng và hiệu năng với các phần mềm Adobe khác như Photoshop và inDesign.

Nhấn mạnh mỏ

Thật không may, nếu mã không thể hỗ trợ các hoạt động CPU nền, bạn không thể làm gì từ quan điểm của máy Mac để tăng tốc mọi thứ. Khi tất cả người dùng trong diễn đàn chấp nhận (bắt đầu), giải pháp duy nhất là chờ đợi bản cập nhật từ Adobe.

Tại sao lại như vậy

Nói chung, các ứng dụng trong nền bị "tạm dừng" - về mặt kỹ thuật, chúng được ưu tiên thấp . Điều này có nghĩa là việc thực thi dừng lại cho đến khi CPU có cơ hội thực hiện thêm một số lệnh; thường là trong một hoạt động tìm nạp IO. Quản lý quá trình này được gọi là "Lập lịch CPU" và là thứ mà phần cứng xử lý cho bạn - ứng dụng chỉ cần cho phép nó (từ bỏ quyền kiểm soát).

Một quan niệm sai lầm phổ biến của đa luồng là mọi thứ thực thi nhanh hơn. Đây không phải là trường hợp, nó chỉ là nhiều thứ xảy ra đồng thời sử dụng tốt hơn các tài nguyên CPU. Nó giống như có một chiếc taxi (người vận chuyển) chở người giữa sân bay và trung tâm hội nghị so với bốn người làm việc trên tàu. Tất cả đều có cùng tốc độ, chỉ là bạn đang di chuyển nhiều hơn.

Ứng dụng "có khả năng đa luồng" cho phép phần cứng quản lý và sắp xếp thời gian của CPU và có nhiều CPU có thể được phân bổ hơn, các công việc nền có nhiều tài nguyên hơn để hoàn thành công việc.


1
Bạn có thể giải thích ngắn gọn tại sao một ứng dụng không đa luồng sẽ chậm hơn trong nền không? Trí tưởng tượng của tôi đề xuất: có N luồng chạy cùng một lúc và Mac tự động sử dụng 85% tài nguyên của nó trên luồng "chính" đối với người dùng và 15% được chia cho tất cả các luồng khác. Tôi không biết gì về điều này, tôi chỉ đang làm cho nó lên.
Andrew Swift

1
Nói chung, các ứng dụng đơn luồng được "tạm dừng" trong nền và "chạy" ở nền trước. Để giữ cho ứng dụng tồn tại trong khi ở chế độ nền, ứng dụng sẽ ngay lập tức "thăm dò" CPU và gọi một số chức năng để thực hiện (ví dụ như lưu tệp của bạn). Đây không phải là về "phân bổ CPU" mỗi se. Từ việc đọc diễn đàn, những người có Mac 8 lõi và 16 lõi chỉ nhìn thấy một lõi duy nhất được sử dụng khi chạy AI có nghĩa là đơn giản là không tận dụng được toàn bộ tài nguyên.
Allan

1
Nếu bạn muốn cập nhật câu trả lời của mình với mô tả này, tôi rất vui lòng chọn nó là chính xác.
Andrew Swift

1
@ Allan Wow! Tôi sẽ không bao giờ đoán được rằng Adobe Illustrator không hỗ trợ đa luồng! Đối với tôi có vẻ như một ứng cử viên có khả năng cho đa luồng. Sau đó, một lần nữa, Microsoft phải mất một thời gian dài để hỗ trợ đa luồng với Excel (một ứng cử viên rõ ràng khác) và ngay cả bây giờ việc triển khai của nó cũng không được tốt lắm. Không còn nghi ngờ gì nữa khi thời gian trôi qua ngày càng nhiều ứng dụng sẽ hỗ trợ nó.
Monomeeth

1
@Monomeeth - Tôi đồng ý. Tôi không thể tin rằng AI đã đi quá xa so với đường cong dev. Một điều tôi đọc được trong diễn đàn là người dùng than thở rằng CC về cơ bản sẽ cho phép Adobe thu tiền và không sửa sản phẩm. Với việc Apple chuyển sang CPU của riêng họ và hỗ trợ tiêu diệt các ứng dụng 32 bit, Adobe có thể buộc phải sửa chữa mọi thứ.
Allan

0

Câu trả lời này là của Mordy Golding , Giám đốc sản phẩm cho Adobe Illustrator (2001-2004), tại Quora :

Đồ họa vector có những ưu điểm và nhược điểm của chúng. Đáng buồn thay, đây là một trong những nhược điểm. Đó là bởi vì đồ họa vector được vẽ theo thứ tự xếp chồng tuyến tính.

Lấy một ví dụ đơn giản - lấy một lớp với một hình chữ nhật duy nhất. Nhân đôi layer đó 100 lần. Mặc dù chỉ có thể nhìn thấy lớp trên cùng, nhưng họa sĩ minh họa vẽ từng hình chữ nhật từ lớp dưới cùng lên trên cùng. Illustrator không thể vẽ lớp 50 cho đến khi 49 trước đó được thực hiện. Điều này không giống như photoshop chỉ liên quan đến các pixel cuối cùng có thể nhìn thấy.

Mở rộng khái niệm hơn nữa. Nói rằng bạn đã có 4 lõi. Bạn có thể lấy một tập tin photoshop và chia nó thành một lưới gồm 4 khu vực và nói với mỗi lõi để vẽ 1 khu vực - tất cả cùng một lúc. Đó là bởi vì một pixel trong một lưới không có tác động gì đến các pixel ở một vùng lưới khác. Vì bạn có thể chia ảnh thành nhiều khu vực độc lập, bạn có thể chỉ định nhiều lõi để hiển thị đồng thời từng khu vực.

Tuy nhiên, trong phần minh họa, mỗi đối tượng được vẽ theo thứ tự nó xuất hiện theo thứ tự xếp chồng. Vì vậy, nếu tôi chia một hình ảnh thành một lưới gồm bốn, tôi vẫn phải xây dựng tất cả các đối tượng nghệ thuật theo đối tượng cho dù đó là lưới nào. Có nghĩa là cả 4 lõi vẫn phải đợi cho đến khi tất cả các đối tượng được vẽ trước khi hiển thị.

Điều này có nghĩa là chỉ một số loại chức năng có thể hỗ trợ chức năng đa lõi trong Illustrator. Ví dụ: nếu bạn in một tệp lớn, họa sĩ minh họa sẽ chuyển việc in đệm sang lõi khác và đưa bạn trở lại tài liệu của mình để tiếp tục làm việc ngay lập tức. Nhưng thật đáng buồn, điều này là không thể để tăng tốc các tác vụ tuyến tính như vẽ / vẽ nghệ thuật.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.