[C#] - Program pobiera za dużo CPU - AutoStart

0

Napisałem sobie dodawanie pliku do autostartu, i jest problem. Pobiera on od 54,000k do 76,000k Zużycia Pamięci (CPU)...

Oto mój kod. Jest tutaj tylko autorun i właśnie on tyle pobiera...:

[code]
using System;
using System
.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Win32;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public static void startup()
{

string source = Application.ExecutablePath.ToString();
string destination = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
destination = System.IO.Path.Combine(destination, "Programik.exe");
try
{
System.IO.File.Copy(source, destination, false);
source = destination;
}
catch
{
}

try
{
RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);

if (registryKey.GetValue("NowyProgram") == null)
{
registryKey.SetValue("NowyProgram", destination);
}

registryKey.Close();
}
catch
{
}
}

private void Form1_Load(object sender, EventArgs e)
{
startup();
}
}
}

[/code]

Kod ogolnie działa, dodaje plik do autostartu, po uruchomieniu włącza sie program, ale zużycie procesora jest takie jak podałem wyżej.

Ma ktoś jakiś pomysł, jak to przepisać? Albo poda gotowy kod z którego korzysta i zabiera on mało CPU?

0
  1. To w końcu piszesz o pamięci czy o CPU?
  2. I w czym tak właściwie problem? Program zjada Ci całą pamięć i nie starcza na inne procesy czy jak?
0

Faktycznie nie wiadomo o co ci chodzi. Jeżeli o pamięć to taki urok .NET. Do małych programów się nie nadaje, najlepiej przepisz to w C++.

0

Czytałem kiedyś artykuł o rezerwacji pamięci przez .NET - ogólnie chodziło o to że framework zabiera "na zapas" więcej (czasami znacznie więcej) pamięci niż potrzebuje, bo korzystanie z już zaalokowanej pamięci jest dużo szybsze niż ciągłe alokowanie nowej. Jeśli system zgłasza że brakuje mu pamięci, nadmiarowa pamięć jest automatycznie zwalniana, więc tak naprawdę nie spowalnia to działania komputera. Był też sposób na pozbycie się tego mechanizmu.

Niestety mimo że szukałem nie mogę znaleźć tego artykułu :/

0
MiL napisał(a)

Faktycznie nie wiadomo o co ci chodzi. Jeżeli o pamięć to taki urok .NET. Do małych programów się nie nadaje, najlepiej przepisz to w C++.

Nie nadaje się bo?
Czasami czuję, jakbym żył w świecie pełnym jakichś fetyszystów liczb wyświetlanych w taskmanagerze, na dodatek nie rozumiejących ich znaczenia.

0
  1. Mylisz pojęcia zużycia CPU(Central Processing Unit) i zużycia pamięci
  2. Jeśli chcesz w najprostszy sposób zmniejszyć ilość używanej pamięci to wsadź ten program w konsole, bo na podstawie podanego przez Ciebie fragmentu kodu nigdzie nie korzystasz z żadnych elementów aplikacji okienkowej (chyba że program jest bardziej złożony, ale wtedy ciezko będzie Ci pomóc nie znając innych zadań jakie wykonuje)
0

Ogólnie moja aplikacja bierze około 90,000 CPU. Program ma na celu uruchamiane ustawień myszki Oscar Editor i załadowywanie configu pod daną grę. W moim przypadku pod Condition Zero.
Chciałem zobaczyć czemu mój program zabiera tyle CPU, rozłożyłem go na sekcje, kodu wykonywalnego i kodu na dodawanie ów aplikacji do autostartu, i wyszło na to, że właśnie większość bo od 50-70k bierze ten głupi autostart...

1 użytkowników online, w tym zalogowanych: 0, gości: 1