2010-08-27 25 views
6

Uygulamamın başlangıç ​​zamanını eşleştirmeye çalışıyorum, bu yüzden Process.Start() yöntemini kullanarak uygulamamı başlatan küçük bir C# programı yazdım ve bir kronometre kullanarak zaman geçirdim.Process.Start() işlevini kullanırken uygulama başlatma zamanı neden daha yavaş?

Uygulamayı kendim başlatmaya çalıştığımda (yalnızca üzerine tıklayarak), muhtemelen 2-3 saniye sürer. Test programımı kullanarak uygulamayı başlatmaya başladığımda 8-10 saniye sürüyor. Başlangıç ​​zamanı, bu büyüklükte sürekli olarak farklıdır.

Bir çalıştırmayı başlatmak için Process.Start kullanmanın neden başlangıç ​​sürelerini bu kadar çok etkileyeceği konusunda bir fikriniz var mı?

+0

Hata ayıklayıcı altında mı çalıştırıyorsunuz? Ya da Yayınlama modunda mı? Görsel stilde mi yoksa komut satırında mı çalışıyorsunuz? –

+0

Sürüm modunda çalıştırıyorum ve – dreadpirateryan

cevap

1

Yardımlarınız için teşekkürler. Cevabım var ve Process.Start ile ilgisi yok.

İşlemi başlattıktan sonra, uygulamanın gerçekte göründüğünü bilmesi için belirli bir pencere tanıtıcısının görünmesini bekliyordum. Döngü çok sıkıydı. While döngüsünde 200 ms'lik bir uyku başlattım ve başlangıç ​​zamanı tekrar normaldi.

+0

dreadpirateriyan, lütfen bunu başkalarının daha hızlı bulmasına yardımcı olmak için kendinizden gelen bile olsa, yanıt olarak seçin. – Marcel

0

Sizin ipucunuz Process.Start()System.Diagnostics ad alanında olmalıdır. Bu şekilde bir süreç başlattığınızda, ona bir grup monitör/müfettiş ekliyorsunuz. Bu kesinlikle bir ek yük ekler.

Sen (gereksiz-uzun süreli süreç izleme önlemek için) başlattıktan sonra hemen Process nesne üzerinde Dispose() arayarak denemek isteyebilirsiniz, ancak tamamen ilişkili giderlerini önlemek mümkün olmayacaktır.

+0

komut satırından, Process.Start kullanımıyla ilgili belgelerinde hiçbir şey görmüyorum, bu durum, ortaya çıkan uygulama için daha yavaş çalışma zamanı performansıyla sonuçlanıyor. Herhangi bir bağlantın var mı? Bunu okumakla ilgilenirim. –

0

Basitçe söylemek gerekirse, aslında iki işlem başlıyor sadece bir değil. Bu yüzden daha uzun sürer.

Uygulamanızı iki kez tıkladığınızda, yalnızca bir uygulama yüklüyorsunuz ve bunların hepsi DLL dosyası.

Tanılama uygulamanızı çalıştırdığınızda, önce ilk uygulamayı JIT'd olması gereken .NET derlemeleriyle yüklersiniz (Tam zamanında derleme: ücretsiz değil). Ancak bundan sonra her şey yapıldıktan sonra, DİĞER uygulama başlar. Hedef uygulamanız da bir .NET uygulamasıysa, tüm döngü kendini tekrar eder.

+1

Bir Kronometre ile bunu zamanlıyor, bu yüzden muhtemelen Proses'in başlangıç ​​zamanını değil, test uygulamasının başlangıç ​​zamanını ölçüyor. –

İlgili konular