Saya perhatikan bahwa ketika Excel 2007 (dan mungkin versi sebelumnya) memiliki fokus jendela, Excel berjalan dengan kecepatan penuh yang berarti bahwa file membuka makro VBA yang cepat dan berjalan lama dijalankan dengan cepat.
Jika jendela Excel kehilangan fokus, prioritas utas Excel tampaknya menurun secara dramatis dan file besar yang dibuka ketika Anda memindahkan fokus terbuka lamban, dan makro VBA kompleks membutuhkan waktu lama untuk diselesaikan.
Apakah ada cara untuk menjaga prioritas Excel tetap tinggi terlepas dari apakah itu fokus atau tidak?
Saya tahu saya dapat meningkatkan prioritas utas secara artifisial melalui Task Manager tetapi saya tidak yakin apa efek knock-on yang mungkin terjadi pada spreadsheet, atau OS saya.
Sistem saya adalah Dual Core cepat dengan RAM 4Gb dan menjalankan Vista 64.
EDIT UNTUK KLARIFIKASI:
Masalah saya bukan hanya tentang meningkatkan prioritas proses Excel melalui Task Manager karena ini hanya mempengaruhi Excel ketika memiliki fokus jendela.
Intinya adalah apa yang terjadi ketika Excel kehilangan fokus jendela.
Dari menggunakan Excel secara luas, tampaknya, secara desain , ia sengaja menurunkan prioritas prosesnya sendiri ketika jendela Excel tidak memiliki fokus.
Menetapkan prioritas yang lebih tinggi untuk proses Excel tidak menghentikan hal ini terjadi - itu hanya memberi Excel prioritas proses yang lebih tinggi ketika memiliki fokus tetapi masih menurun secara dramatis ketika kehilangan fokus.
Dalam penggunaan Excel normal (mungkin 99% dari semua orang yang menggunakannya), Anda tidak akan melihat efek ini tetapi dengan spreadsheet besar (saya kira sekitar 2.000 lembar kerja) dan makro VBA kompleks yang memerlukan beberapa menit untuk dieksekusi, efeknya sangat nyata.
Idealnya, saya membutuhkannya untuk menjaga prioritas utas yang sama terlepas dari apakah jendela Excel terfokus.
Hingga saat ini, saya baru saja duduk dari komputer selama beberapa menit selama pemrosesan sehingga saya tidak secara tidak sengaja mematikan jendela Excel ketika sedang berderak tetapi saya hanya berharap ada solusi yang lebih baik ... mungkin semacam registry hack?
EDIT:
Saya hanya pernah menemukan satu lagi menyebutkan masalah ini di internet di tautan ini
Ini adalah kutipan yang relevan ...
Namun, jika saya membuat jendela Excel 2000 terlihat oleh pengguna dan juga menjaga jendela tetap fokus, makro mengeksekusi dengan kecepatan yang diharapkan. Sekali lagi, jendela harus memiliki fokus atau makro memperlambat untuk merayapi lagi.
sumber
Jawaban:
Edisi Windows non-server, secara default, memberikan dorongan prioritas untuk proses latar depan. Saat Anda mendorong Excel ke latar belakang, itu kehilangan dorongan yang sebelumnya ada di latar depan; beberapa program lain malah mendapatkan peningkatan prioritas.
Anda dapat mengubah pengaturan agar program tidak lagi mendapatkan peningkatan ini. Catatan: Ini tidak akan memengaruhi Excel saja, tetapi program apa pun yang seharusnya memenuhi syarat untuk peningkatan.
Berikut cara mengubah pengaturan di Windows XP:
Klik tab Advanced . Panel pertama adalah Penjadwalan Prosesor :
Ubahlah dari default "Program" ke "Layanan latar belakang" dan itu akan menyebabkan Excel berperilaku lebih dekat dengan yang Anda inginkan ketika itu di latar belakang.
sumber
Saya tidak berpikir ada masalah dengan mengubah prioritas proses Excel ke Above Normal dalam kasus Anda. Seharusnya tidak menjadi masalah.
Jangan membuatnya tertinggi , di mana ia akan bersaing dengan proses sistem.
Jangan menangguhkannya , atau Anda dapat menunda-nunda hal lain!
Jika Anda menggunakan Mark Russinovich 's Process Explorer
untuk melihat pada prioritas proses yang berjalan pada sistem Anda.
Ini menunjukkan nilai-nilai prioritas berikut dan hubungannya.
Anda bisa menggunakan proses explorer dan mencoba memprioritaskan ulang untuk Excel .
Pindahkan di atas 8 , tetapi jangan melampaui 12
Above Normal di 10 seharusnya, saya harapkan.
Sejalan dengan itu, jika Anda berpikir beberapa proses mengambil terlalu banyak waktu prosesor sementara tidak fokus, Anda dapat menurunkan prioritasnya hingga Idle .
Saya biasanya menggunakan teknik ini untuk itu.
sumber
am
mencari detail ini, tetapi pemahaman saya adalah bahwa jendela dalam fokus biasanya akan menjadiNormal
prioritas (secara default) dan setelah Anda pindahExcel
keAbove Normal
prioritas, itu harus berjalan pada prioritas yang lebih tinggi daripada jendela fokus. Tapi, pada prioritas yang lebih rendah maka proses sistem - yang mana Anda inginkan.Ada beberapa hal berbeda untuk dipertimbangkan di sini: Ketika Anda mengubah prioritas suatu proses, prioritas dasar itu diwarisi oleh semua utasnya, dan proses lainnya dimulai. Prioritas saat ini terdiri dari prioritas dasar dan sejumlah faktor yang menentukan apakah harus ditingkatkan atau tidak - berada di latar depan tidak dengan sendirinya meningkatkan prioritas, tetapi hal-hal seperti keluar dari keadaan menunggu atau melakukan beberapa IO dapat berikan dorongan sementara singkat.
Saya menyarankan agar menjalankan proses Excel Anda dengan prioritas tinggi ketika mengerjakan buku kerja yang sangat intensif ini masuk akal, dan saya akan mengatakan pintasan kedua yang disebut "Excel prioritas tinggi" mungkin cara yang baik untuk melakukan ini. Pertama buat file batch satu baris yang menjalankan perintah mulai dengan switch yang sesuai, misalnya:
start "high priority excel" /max /high "C:\Program Files\Microsoft Office\Office12\EXCEL.EXE"
(pada Windows versi 64 bit ini
start "high priority excel" /max /high "C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE"
kecuali Anda juga menjalankan Office versi 64 bit, yang hanya tersedia untuk tahun 2010 dan seterusnyastart "high priority excel" /max /high "C:\Program Files\Microsoft Office\Office14\EXCEL.EXE"
). Perhatikan bahwa judul untuk jendela dapat berupa apa saja yang Anda suka, tetapi bukan opsional.Sekarang simpan ini sebagai contoh HiperExcel.cmd di tempat yang mudah digunakan - mungkin folder kantor, atau folder ac: \ scripts atau semacamnya, atau folder rumah Anda sehingga ini dapat menjelajah dari mesin ke mesin. Buat pintasan baru yang mengarah ke file ini, buat folder mulai folder tempat file disimpan. Pilih ikon untuk file - browse ke executable Excel.exe lalu pilih sesuatu selain ikon Excel biasa untuk kejelasan.
Klik pintasan baru Anda dan itu akan meminta Excel berjalan sebagai proses prioritas tinggi, dengan prioritas dasar 13 dan ketika menjalankannya mungkin akan mendapatkan prioritas maksimum untuk proses non-real-time dari 15. Bahkan jika sesuatu yang lain mendapat dorongan, seharusnya tidak mendapatkan prioritas yang lebih tinggi. Perhatikan bahwa proses latar depan TIDAK mendapatkan dorongan prioritas hanya karena berada di latar depan (tidak sejak NT4.0). Jadi apa yang terjadi?
Kembalikan apa yang kita ketahui sejauh ini: Proses dapat berubah sesuai dengan prioritas, tetapi tidak dengan pengecualian absolut dari proses dengan prioritas lebih rendah (well, bener benar-benar, tetapi mari kita menjaga segala sesuatunya pada proses untuk kemudahan diskusi). Apa yang terjadi ketika suatu proses mendapatkan "gilirannya"? Itu bisa berjalan untuk satuan waktu yang disebut kuantum. Berapa lama sebuah kuantum? Tergantung...
Di sinilah proses foreground dapat menggunakan lebih banyak sumber daya - ketika ia mendapat giliran, belokan itu bisa bertahan tiga kali lebih lama daripada putaran proses latar belakang. Jadi mungkin tidak terlalu sering (tergantung pada prioritas) tetapi ketika itu terjadi, itu memakannya lebih lama.
Anda dapat memilih untuk menggunakan kuantum pendek atau panjang (standarnya pendek pada OS workstation, panjang pada server), dan untuk meningkatkan proses latar depan atau tidak (variabel untuk b / s, diperbaiki untuk server secara default), dan jika didorong, oleh berapa (efektif hingga 3 kali). Sekarang, bagian yang sulit dari ini adalah bahwa jika Anda memilih untuk mengubah pengali, Anda berakhir dengan segala sesuatu yang memiliki nilai yang sangat pendek untuk kuantum, sedangkan jika Anda menonaktifkan foreground meningkatkan semuanya mendapatkan jumlah yang lebih lama tetapi sama. Jika Anda menonaktifkannya tentu saja, layanan latar belakang windows mendapatkan kuantum yang sama dengan aplikasi pengguna Anda, yang mungkin tidak ideal. Anda perlu mengatur nilai dalam registri di: HKLM \ System \ CurrentControlSet \ Control \ PriorityControl \ Win32PrioritySeparation, menggunakan bit mask. Untuk mempermudah, nilai yang paling Anda inginkan adalah:
2 = nilai default, berarti menggunakan default dengan dorongan maksimum. default pada workstation O / S pendek dan variabel. 8 = tetap, kuantum pendek (latar depan dan latar belakang sama) 40 (desimal, x28 hex) = tetap dan panjang (ini sama dengan default server) 36 (desimal, x24 hex) = pendek, variabel tetapi sedikit meningkatkan proses foreground . Saya pikir ini adalah salah satu yang mungkin akan memberi Anda manfaat paling besar untuk mengurangi jumlah yang bersaing aplikasi lain, tetapi memungkinkan Excel untuk mendapatkan lebih banyak sumber daya saat berada di latar depan (selama Anda juga meningkatkan prioritasnya).
Cobalah dan lihat, saya harap ini membantu - jarak tempuh Anda tentu saja bervariasi.
Selain itu: Banyak aplikasi atau proses lain yang tidak memiliki CPU sebagai hambatannya - contoh sinkronisasi Outlook dan penelusuran IE Anda mungkin memiliki jaringan, dan mungkin untuk Outlook beberapa disk IO sebagai faktor yang lebih penting dalam kecepatannya, jadi apakah mereka mendapatkan foreground boost atau tidak, dampak dalam kinerja yang terlihat mungkin di bawah apa yang dapat Anda lihat dengan pengamatan sederhana.
sumber
Tidak ada masalah dengan meningkatkan prioritas proses ke "di atas normal" atau "tinggi", tapi jangan setel ke "realtime". Tidak dapat membantu Anda dengan Excel secara khusus, maaf.
sumber
Ada kemungkinan bahwa manipulasi prioritas sedang dilakukan bukan oleh Excel, tetapi oleh Windows itu sendiri. Windows memiliki mekanisme di mana prioritas proses dengan windows di latar depan ditingkatkan; jadi, ketika Excel kehilangan fokus, prioritasnya kembali normal (yang sedikit lebih rendah).
Satu-satunya halaman di MSDN yang dapat saya temukan tentang ini dengan pencarian cepat adalah Prioritas Prioritas :
Dari apa yang saya dengar, ada cara untuk menonaktifkan dorongan prioritas itu.
sumber
Coba saja ini, itu berhasil untuk saya.
Cara yang tidak terlalu bagus, tetapi sebenarnya hanya dua kali lipat kecepatan kalkulasi saya! Luar biasa! (tapi saya akan memeriksa hasilnya, tidak yakin tentang mereka ...)
Bentuk pengguna Anda harus di tengah layar di 1024 * 768. Itu hanya mengirim perangkat lunak klik kanan pada formulir pengguna.
Perhitungan penuh, tetapi jangan gunakan komputer Anda saat menghitung (luncurkan program lain, windows ..).
Coba dan beri tahu saya cara kerjanya untuk Anda!
sumber
Setelah malam yang panjang perhitungan kecepatan penuh, dan setelah cek, hasilnya pagi ini ... benar-benar salah.
Jadi saya pikir ini hanya bug, perhitungannya tidak dilakukan dengan benar.
Mengklik pada formulir pengguna dalam perhitungan hanya mempercepat kecepatan proses, tetapi tidak sepenuhnya menghitung ulang lembar di luar. Aku tepat berada di Real Time dengan prio.
Hal menyenangkan lainnya adalah mengubah tugas proses dengan prio_x64_199_2367.exe, http://softziz.com/2010/11/prio-64-bit-1-9-9/
Ini menghemat prioritas proses Anda yang didefinisikan dengan CTRL ALT DEL, di dalam task manager, untuk penggunaan di masa mendatang.
Salam,
John
sumber