Re[25]: Массивы в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.08.03 18:38
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Представить себе каталог, который будет обрабатываться 5-6 часов я не в состоянии. Так что, как видишь, виноват не дотнет.


Подъезжай как-нить покажу.

AVK>PS: Читабельность твоего кода преотвратнейшая, еле разобрался.


Согласен.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[27]: Массивы в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.08.03 18:38
Оценка:
Здравствуйте, desperado_gmbh, Вы писали:

_>А если еще и команды заготовить заранее, а в цикле только задавать значения параметров?


Получишь пару процентов выигрыша. Вам уде сто первый раз говорят — основные тормоза идут от работы с БД.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: Многомерные Массивы в C# :)
От: Silver_s Ниоткуда  
Дата: 28.08.03 19:20
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Ну в общем прошло уже несколько больше года. Да и ладно уж "крупные". Хотя бы один пример коммерческого проекта под дотнет "широкого" масштаба.


Насколько широкого масштаба? Что какой нибудь WinRar ждешь дотнетовский или ErWin. Такие тиражные продукты имеют долгую историю с постепенными переходами от версии к версии, так просто не перескочишь на дотнет.
А так дотнетизируемся все равно потихоньку на новых продуктах. Мы вот внесли свой вклад, московскую "Планету фитнес" задотнетизировали недавно. Не широкомасштабный продукт, но несколько десятков рабочих мест, ну может сотня будет. Именно настольные клиенты, зачем юзерам мучаться с броузерами, проще один раз фреймворк установить. А альтернативы и небыло для настольной части кроме как WinForms, на чем еще можно быстро реализовать механизм полуавтоматического строгания сотни навороченых форм. Очень малыми силами делался проект. И к тому же махом привинчивались фсякие аппаратные фичи типа цифровых фотокамер, читалок смарткарт.
Сейчас еще один проект делаем для них, естейственно на дотнете. В нем вобще интерфейсная часть навороченая, полностью все рисованое начиная со скролбаров с полупрозрачными ползунками и кончая таблицами.
В графике тоже альтернатив не видно — дотнет и GDI+ в этом деле рулят. Теоретически GDI+ тормозной, а на практике это никак не сказывается, так получается что не возникает ситуаций что надо одновременно весь экран перерисовывать со скоростью 40 кадров в секунду. Да ни начем больше это не сделаешь, не тратить же один человеко/год на разработку рисованых контролов.
Так что дотнет вещь очень юзабельная, дай ему только время развернуться.
Re[25]: Массивы в C#
От: Аноним  
Дата: 28.08.03 19:45
Оценка:
А я вот создал новый пустой проект, хотел потестить, скопировал второй листинг, а он не пашет — выдаёт ошибку вот в этой строке —
DirectoryInfo dirInfo = new DirectoryInfo(path);

Подумал что path не задан. Задал —
path = "\\";

а он всё равно не пашет
Re[23]: Массивы в C#
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 29.08.03 04:22
Оценка:
Hello, VladD2!
You wrote on Thu, 28 Aug 2003 18:38:03 GMT:

хъ

V> Больше небыло? Ай-йа-йа. Ну, это потому что ты свой код не запускаешь.

V> Мы тут запустили код к твоей статье про печать в ВТЛ, и ты представляешь
V> (?) поймали тот самый AV. Наверно мы криворукие.

Где?

AS>> Писать на плюсах просто надо уметь.


V > Ну, учись.

Приводи ошибку, посмотрим, кто виноват.

With best regards, Alex Shirshov.
Posted via RSDN NNTP Server 1.7 beta
Re[26]: Массивы в C#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.08.03 06:20
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Dispose специально закоментировал, так как без него быстрее. Получилось на

AS>папке temp 51 файл в секунду. Что очень не плохо.

Ну судя по моим результатам 45328/140.84 получается примерно 322 файла в секунду. На самом деле это даже заниженая цифра, поскольку в момент теста я еще и сообщения в янусе читал. Так что зря ты диспозы повыкидывал.

AS>Неужели все дело было в дополнительных объектаз-параметрах, которые не

AS>убивались?

Скорее в том что работа с одним коннекшеном вобще без диспозов любых объектов оставляет какие то ресурсы mssql неосвобожденными. Надо было глядеть память не программы а mssql и смотреть его счетчики.
... << RSDN@Home 1.1 beta 1 >>
AVK Blog
Re[26]: Массивы в C#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.08.03 06:20
Оценка:
Здравствуйте, VladD2, Вы писали:

AVK>>Представить себе каталог, который будет обрабатываться 5-6 часов я не в состоянии. Так что, как видишь, виноват не дотнет.


VD>Подъезжай как-нить покажу.


320 файлов/сек. 6ч * 3600 = 21600 сек. Примерно 7 миллионов файлов! Ты ничего не путаешь?
... << RSDN@Home 1.1 beta 1 >>
AVK Blog
Re[26]: Массивы в C#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.08.03 06:20
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>А я вот создал новый пустой проект, хотел потестить, скопировал второй листинг, а он не пашет — выдаёт ошибку вот в этой строке —

А>
А>DirectoryInfo dirInfo = new DirectoryInfo(path);
А>


Ошибка какая? Может ты параметры в командной строке не задал? Нужно первым параметром путь к каталогу, а вторым true для рекурсивного разбора или false для разбора только верхнего уровня.
... << RSDN@Home 1.1 beta 1 >>
AVK Blog
Re[28]: Массивы в C#
От: desperado_gmbh http://www.livejournal.com/users/tolstopuz
Дата: 29.08.03 07:24
Оценка:
Здравствуйте, VladD2, Вы писали:

_>>А если еще и команды заготовить заранее, а в цикле только задавать значения параметров?

VD>Получишь пару процентов выигрыша.

Может, и меньше — SqlCommand не держит unmanaged-ресурсов. Но практика полезная, при использовании OleDbCommand каждое создание команды по сравнению с повторным использованием — вызов IDBCreateCommand.CreateCommand и байндинг параметров заново.
Re[27]: Массивы в C#
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 29.08.03 08:48
Оценка:
Hello, AndrewVK!
You wrote on Fri, 29 Aug 2003 06:20:35 GMT:

AS>> Dispose специально закоментировал, так как без него быстрее.

AS>> Получилось на папке temp 51 файл в секунду. Что очень не плохо.

A> Ну судя по моим результатам 45328/140.84 получается примерно 322 файла в

A> секунду. На самом деле это даже заниженая цифра, поскольку в момент
A> теста я еще и сообщения в янусе читал. Так что зря ты диспозы
A> повыкидывал.

Раскоментировал диспозы и запустил на папке program files. Там у меня
примерно 68 тыс. файлов. Первые несколько минут работало все шустро, но
потом — опять тормоза. Машинка у меня не сильная: Celeron 950, 256 Mb.
Поставил счетчики на все, что можно (уже потом, когда конкретно все
тормозило). SQL Server не тормозит, с ним все пучком. память не растет и
вообще все стабильно.
Меня больше заинтересовали счетчики .net memory
Ситуация такая: первое поколение все время растет. 0 поколение стабильно и
не растет почти всегда. Иногда скачок в нем приводит к увеличению 1
поколения, после чего в 0 поколении все нормализуется. Вместе с 1 поколением
растет, естественно bytes in heap.
Потом, когда 1 поколение уж очень сильно нахапает памятухи оно собирается и
увеличивается второе поколение (вообще-то оно постоянно увиличивается, но по
тихоньку). Очень сильно увеличивается только в момент сбора в первом
поколении.
Короче, лик очевидный.
Но где?

хъ

With best regards, Alex Shirshov.
Posted via RSDN NNTP Server 1.7 beta
Re[28]: Массивы в C#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.08.03 09:11
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

AS>Раскоментировал диспозы и запустил на папке program files. Там у меня

AS>примерно 68 тыс. файлов. Первые несколько минут работало все шустро, но
AS>потом — опять тормоза.

Вывод — не те диспозы . У меня ведь не тормозит. Ищи причину дальше.

AS> Машинка у меня не сильная: Celeron 950, 256 Mb.


Ну не намного хуже моей.

AS>Короче, лик очевидный.

AS>Но где?

Ну сравни в чем отличия твоей и моей программы.
... << RSDN@Home 1.1 beta 1 >>
AVK Blog
Re[29]: Массивы в C#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 29.08.03 09:11
Оценка:
Здравствуйте, desperado_gmbh, Вы писали:

_>Может, и меньше — SqlCommand не держит unmanaged-ресурсов.


А если Prepare() позвать?
... << RSDN@Home 1.1 beta 1 >>
AVK Blog
Re[30]: Массивы в C#
От: desperado_gmbh http://www.livejournal.com/users/tolstopuz
Дата: 29.08.03 09:20
Оценка:
Здравствуйте, AndrewVK, Вы писали:

_>>Может, и меньше — SqlCommand не держит unmanaged-ресурсов.

AVK>А если Prepare() позвать?

Тогда команда будет держаться в памяти до закрытия соединения. Ну разве что можно изменить текст или параметры и выполнить заново, что вызовет Unprepare, но это извращение.

Кстати, Dispose у SqlCommand вообще не используется.
Re[29]: Массивы в C#
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 29.08.03 12:17
Оценка:
Hello, AndrewVK!
You wrote on Fri, 29 Aug 2003 09:11:22 GMT:

хъ
Короче, залил я эти файлы: Process 75113 files in 02:56:01.6160000.

Я не понимаю, в чем отличия твоего кода от моего, кроме переоткрытия
соединени каждый раз в фунции Process.

With best regards, Alex Shirshov.
Posted via RSDN NNTP Server 1.7 beta
Re[27]: Массивы в C#
От: Аноним  
Дата: 29.08.03 22:51
Оценка:
AVK>Ошибка какая? Может ты параметры в командной строке не задал? Нужно первым параметром путь к каталогу, а вторым true для рекурсивного разбора или false для разбора только верхнего уровня.


recursive = false;
path = "C://";

/*
try
{
    path = args[0];
    recursive = bool.Parse(args[1]);
}
catch
{
    throw new ArgumentException("Invalid command line arguments");
}
*/

System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(path);


Теперь ошибка такая "An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in system.data.dll Additional information: System error." в строке:


try
{
    cmd.ExecuteNonQuery();
}


видать Sql не подключен. Извеняюсь — не скажете как его подрубить?
Re[24]: Массивы в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.08.03 23:35
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

V>> Больше небыло? Ай-йа-йа. Ну, это потому что ты свой код не запускаешь.

V>> Мы тут запустили код к твоей статье про печать в ВТЛ, и ты представляешь
V>> (?) поймали тот самый AV. Наверно мы криворукие.

AS>Где?


Вообще-то тебе было об этом сказано и ты вроде даже поправил. Но факт есть факт.

AS>Приводи ошибку, посмотрим, кто виноват.


Если не ошибаюсь это был вот этот код:

    //Получение хэндла принтера по умолчанию
    HANDLE hPrinter;
    DWORD dwSz = 0x100;
    DWORD dwLastErr = -1;
    PTSTR pBuf = 0;
    while (!GetDefaultPrinter(pBuf,&dwSz))
    {
        dwLastErr = GetLastError();
        if (dwLastErr == ERROR_INSUFFICIENT_BUFFER){
            if (pBuf) delete[] pBuf;
            pBuf = new TCHAR[dwSz];
            dwLastErr = ERROR_SUCCESS;
        }
        else break;
    }

    if (dwLastErr == ERROR_SUCCESS){
        OpenPrinter(pBuf, &hPrinter, NULL);
    }

    if (pBuf) delete[] pBuf;

    // Получение структуры PRINTER_INFO_2 для данного хэндла
    LPBYTE pBufpi = 0;
    DWORD dwSzNeeded = 0;
    dwLastErr = -1;
    while (!GetPrinter(hPrinter,2,pBufpi,dwSzNeeded,&dwSzNeeded))
    {
        dwLastErr = GetLastError();
        if (dwLastErr == ERROR_INSUFFICIENT_BUFFER){
            if (pBufpi) delete[] pBufpi;
            pBufpi = new BYTE[dwSzNeeded];
            dwLastErr = ERROR_SUCCESS;
        }
        else break;
    }

    if (dwLastErr == ERROR_SUCCESS){
        LPPRINTER_INFO_2 pPI = (LPPRINTER_INFO_2)pBufpi;
        // Работаем со структурой
        HDC hDC = CreateDC(NULL, pPI->pPrinterName, NULL, pPI->pDevMode);
        // Работаем с контекстом
        // Удаляем контекст
        DeleteDC(hDC);
    }

    if (pBufpi) delete[] pBufpi;


На пашине с Вынь Сервер 2003 без установленных принтреров был АВ. На всех остальных был ассерт об использовании не инициализированной переменной hPrinter. Но С++ тут конечно непричем. Тут проверки написаны через задницу.

В общем, как бы кто крут не был, но позвлять себе других тоже уважать нужно. Ну, или хоть смайлики ставь.
Тут многие не глупее тебя, а многие и умнее.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[27]: Массивы в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.08.03 23:35
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>320 файлов/сек. 6ч * 3600 = 21600 сек. Примерно 7 миллионов файлов! Ты ничего не путаешь?


Каталог диска открывается только 5 минут. Файлов там не 7 миллионов и но компиляция chm-а идет где-то два часа. И это только один каталог, а таких у нас на некоторых машинах хватает.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[27]: Массивы в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.08.03 23:35
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Ну судя по моим результатам 45328/140.84 получается примерно 322 файла в секунду.


Директории моаленькие. Да и не передашь по сети ты с такой скоростью. В общем 10 мегабит сеть + пол миллиона файлов и часик протарахтит как милая.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[30]: Массивы в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.08.03 23:35
Оценка:
Здравствуйте, Alexey Shirshov, Вы писали:

Попробуй вынести рабочий код в отдельную функцию (вне рекурсии). Тогда память цепляться не будет.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: Массивы в C#
От: Alexey Shirshov Россия http://wise-orm.com
Дата: 30.08.03 08:08
Оценка:
Hello, VladD2!
You wrote on Fri, 29 Aug 2003 23:35:35 GMT:

[поскипанный код не относится к последней статье]

V> На пашине с Вынь Сервер 2003 без установленных принтреров был АВ. На

V> всех остальных был ассерт об использовании не инициализированной
V> переменной hPrinter. Но С++ тут конечно непричем. Тут проверки написаны
V> через задницу.

Согласен. Но заметь, код я сразу же, без разговоров переписал. Но ошибка
была и я ее признаю.

V> В общем, как бы кто крут не был, но позвлять себе других тоже уважать

V> нужно. Ну, или хоть смайлики ставь. Тут многие не глупее тебя, а многие
V> и умнее.

В детском садике нужно сравнивать кто умнее.

With best regards, Alex Shirshov.
Posted via RSDN NNTP Server 1.7 beta
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.