Страница: 1 |
Страница: 1 |
Вопрос: Скорость процессора... и NET
Добавлено: 10.03.07 05:52
Автор вопроса: ANDREY Z5Z | Web-сайт:
У меня 2 вопроса:
Например есть программа - суть в том что она может работать хоть полчаса, а использовать процессор только на 50%. Если кто сталкивался с этим, расскажите какими способами можно "загрузить" процессор и уменьшить время выполнения программы.
Второй вопрос почти ламерский :) Можно ли в NET сделать только часть формы прозрачной, или допустим сделать в ней прозрачную дырку?..
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #1
Добавлено: 10.03.07 08:30
1. в общем случае никак. подробностей.
2. можно. вопрос стар как мир, поиск рулит.
Номер ответа: 2
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 10.03.07 21:51
1. Можно попробовать поставить процессу realtime-приоритет
Номер ответа: 3
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #3
Добавлено: 10.03.07 23:28
А где мой мессаг? (вообщем-то писал то же, что и Sharp) Можно просто поставить приоритет повыше, а для таких целей использовать С или ASM, притом минимизировать вызовы процедур и использовать макроподстановки
Номер ответа: 4
Автор ответа:
ANDREY Z5Z
Вопросов: 38
Ответов: 125
Web-сайт:
Профиль | | #4
Добавлено: 11.03.07 02:14
Понятно... так я и предполагал
Ну а многопоточность ничем не поможет?
Номер ответа: 5
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #5
Добавлено: 11.03.07 21:33
Вообще-то я с таким сталкивался только при работе с сиквелом - он распределяет ресурсы машины как бы "для всех поровну" и резервирует их, не зная, что я тут один и никому они больше не понадобятся. Очень раздражает.
А так чтобы в цикле проц работал на 50% так это наверное мнопроцессорность виновата.
.............
вот написал вот такой вот код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//Infinite();
Thread th1 = new Thread(Infinite);
th1.Start();
Thread th2 = new Thread(Infinite);
th2.Start();
th1.Join();
}
private void Infinite()
{
int a, b, c;
a = b = c = 1;
while (true)
{
c = a + b;
}
}
}
}
у меня на Core2Duo с раскомментированной строкой жрёт только 50% от общей мощности проца, а если закомментить (т.е. работают два потока), то весь стольник.
Номер ответа: 6
Автор ответа:
ANDREY Z5Z
Вопросов: 38
Ответов: 125
Web-сайт:
Профиль | | #6
Добавлено: 11.03.07 23:57
Да, правда один вариант загрузил проц на 100 а другой на 50%... Но реально ускорить работу приложения... как ее ускорить если данные должны попадать в переменные попорядку? А то если запустить одновременно одну и ту же задачу, то там из переменных какая-то куча должна получится пусть даже и проц на 100% задачами загрузился... Потоками наверно хорошо делать что-то в фоновом режиме, чтобы интерфейс был свободен...
Но если подумать, реально интересно сделать например: пусть первый поток заполняет четные индексы массива, а другой нечетные - должно же быстрее заполниться??
Номер ответа: 7
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #7
Добавлено: 12.03.07 00:19
я думаю, что всё от конкретной задачи зависит.
логично было бы предоставлять данные в виде потока данных (к примеру, файловый поток уже сам по себе готов к такой обработке, два раза один блок точно не прочитаешь) и выгружать их тоже в виде потока данных (здесь сложнее - нужно соблюдать порядок, в каком взяли, в таком и положили - надо скармливать работу по синхронизации отдельному потоку, чтобы не тормозить рабочие). а если всё в массиве лежит и выгружается куда-то в такой же массив, то наверное должно получиться и с чередованием индексов.
Номер ответа: 8
Автор ответа:
Stars
Вопросов: 41
Ответов: 239
Профиль | | #8
Добавлено: 18.03.07 16:11
Есть предположение, что надо использовать много поточность. Тоесть на проц у тебя всего 1 поток который грузит на 50% а если допустим сделать 2 потока то я предпологаю что будет на 100% использовать ресурсы. На форуме гдето вроде разбиралось как сделать много поточность!
Номер ответа: 9
Автор ответа:
Stars
Вопросов: 41
Ответов: 239
Профиль | | #9
Добавлено: 18.03.07 16:13
А насчёт дырки прозрачной почитай на форуме гдето было про прозрачность определённого цвета! Тоесть можешь на форме нарисовать любой рисунок а потом всё что этим цветом можно сделать прозрачным