powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / О применимость языков
25 сообщений из 296, страница 9 из 12
О применимость языков
    #39041203
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
SashaMercuryНедавно встретил у Лафоре, но не уверен, актуальна ли эта фраза:
Robert Lafore OOP in C++ fourth editionOf the object-oriented programming languages, C++ is by far the most widely used. Java, a recent addition to the field of OO languages, lacks certain features-such as pointer, templates, and multiply inheritance - that make it less powerfull and versatile than C++.

Ерунда. Написано о том, что в Java нет тех вещей, которые специально оттуда убрали. Лафоре такой подход не нравится - его право.
...
Рейтинг: 0 / 0
О применимость языков
    #39041209
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каким числом датируется это сообщение?
...
Рейтинг: 0 / 0
О применимость языков
    #39041223
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

В общем скачал новую платформу VS2015 и пересмотрел Scimark2.

Почти ничего не поменялось - только Си ушел в еще более дальний отрыв. ~1.5 раза быстрее дНета4 и Явы7.

Ну и немного соврал про аутсайдера - это Дельфи7 с троекратным отрывом =)
Кто захочет - пересоберет на новой Дельфе сам.
...
Рейтинг: 0 / 0
О применимость языков
    #39041248
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TВключил комп. Запускаю MSSQL Managment Studio 2012 (.Net 4.0) Процесс ssms.exe: Хрустит винтом секунд 7-8, Ошибок страниц 38 000.
Закрываю. Запускаю снова, 1-2 секунды, ошибок страниц 39 000, винта не слышно.


А Вам не приходило в голову, что Managment Studio грузит сборки не просто так? Что они нужны? Что там полезный код и данные? И что там при старте происходит множество вещей. Не понимаю, почему долгая загрузка сама по себе - это плохо.
По ошибкам. Вам (скорее Зимарглу ) не кажется, что большое количество ошибок связано с отсутствие необходимого количества физической памяти? Можно сколько угодно ругать современный софт за высокие требования к объему ОЗУ, но ничего не изменится. Managment Studio вполне ложится в эту концепцию. Можно еще поругать сайты за требования к скорости интернета и проца. Опять же они объем памяти жрут своими многомегабайтными страницами.
Речь идет о том, как быть, если Вам нужно написать небольшое и быстрое приложение, не отягощенное десятками визуальных библиотек и разнообразных ресурсов. Например, Вы пишите сервис, которому интерфейс не нужен в принципе. Или консольное приложение. Я понимаю применимость именно в таком смысле.
...
Рейтинг: 0 / 0
О применимость языков
    #39041252
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Зимаргл,

Где Вы берете исходники под эти языки? Дайте ссылку.
...
Рейтинг: 0 / 0
О применимость языков
    #39041256
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Зимаргл,
и напишите, пожалуйста, характеристики машины, на которой Вы все это тестировали.
...
Рейтинг: 0 / 0
О применимость языков
    #39041267
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю что явление "прогрева двигателя" специфично не только для сред платформеров.
Того-же эффекта можно достигать в Oracle, запрашивая индексный доступ к крупной таблице.
Первый пуск будет всегд медленным. В сетях TCP/IP я также наблюдал явление когда
"первый" IP пакет в цепочке пробивает себе дорогу ощутимо медленно.
...
Рейтинг: 0 / 0
О применимость языков
    #39041279
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимарглmayton,

В общем скачал новую платформу VS2015 и пересмотрел Scimark2.

Почти ничего не поменялось - только Си ушел в еще более дальний отрыв. ~1.5 раза быстрее дНета4 и Явы7.

Ну и немного соврал про аутсайдера - это Дельфи7 с троекратным отрывом =)
Кто захочет - пересоберет на новой Дельфе сам.
Зимаргл. А есть данные по .Net и Java7 в сравнении? Можешь табличку сделать?
...
Рейтинг: 0 / 0
О применимость языков
    #39041284
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
mayton,
кэш есть даже у процессора.
Аж три уровня. Да еще какие-то данные могут быть сохранены в регистрах ... )
...
Рейтинг: 0 / 0
О применимость языков
    #39041310
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Ресурсы можно рассматривать как пирамиду РОН/L1-L2/Memory/PagingFile.

Или еще играя в пасьянс с AFFINITY тоже получать различные конфигурации
для мультипоточности.

Интересно как наш летчик решает проблемы отклика для такой пирамидальной
архитектуры? Или у него нет пирамидки ресурсов. Мдя.
...
Рейтинг: 0 / 0
О применимость языков
    #39041323
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdxDima TВключил комп. Запускаю MSSQL Managment Studio 2012 (.Net 4.0) Процесс ssms.exe: Хрустит винтом секунд 7-8, Ошибок страниц 38 000.
Закрываю. Запускаю снова, 1-2 секунды, ошибок страниц 39 000, винта не слышно.


А Вам не приходило в голову, что Managment Studio грузит сборки не просто так? Что они нужны? Что там полезный код и данные? И что там при старте происходит множество вещей. Не понимаю, почему долгая загрузка сама по себе - это плохо.
Это к чему вообще сказано? Мысли вслух? Разделяю :)

Вообще-то я это Зимарглу писал чтобы показать ошибочность его предположения что загрузка кода с HDD узкое место.
AdxПо ошибкам. Вам (скорее Зимарглу ) не кажется, что большое количество ошибок связано с отсутствие необходимого количества физической памяти?
Подучи матчасть как виндовс устроен. Хорошая книжка Джеффри РИХТЕР "Windows для профессионалов", там все разжевано доступным языком. Вкратце: загрузка DLL в память процесса происходит маппингом файла, т.е. DLL файл выступает файлом подкачки для определенного куска адресного пространства процесса. При этом файл не читается заранее. При обращении в это место (неважно код там или данные), если реально страница памяти не существует - менеджер памяти перехватывает исключение и подгружает нужный кусок (страницу) из файла, это и показывает счетчик "ошибок страниц" в диспетчере.
...
Рейтинг: 0 / 0
О применимость языков
    #39041337
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TПодучи матчасть как виндовс устроен. Хорошая книжка Джеффри РИХТЕР "Windows для профессионалов", там все разжевано доступным языком. Вкратце: загрузка DLL в память процесса происходит маппингом файла, т.е. DLL файл выступает файлом подкачки для определенного куска адресного пространства процесса. При этом файл не читается заранее. При обращении в это место (неважно код там или данные), если реально страница памяти не существует - менеджер памяти перехватывает исключение и подгружает нужный кусок (страницу) из файла, это и показывает счетчик "ошибок страниц" в диспетчере.

Ошибки страниц происходят тогда, когда процесс обращается к странице памяти, которая отсутствует в рабочем наборе. Для устранения некоторых ошибок страниц требуется получить содержимое страницы с диска, а другие можно устранить без обращения к диску .
Справка Microsoft по TM в Windows 7. (с)

Обращаю внимание на подчеркнутое. По DLL. Сборка может быть загружена статически и динамически. Про динамическую загрузку сборок рассказывать?
...
Рейтинг: 0 / 0
О применимость языков
    #39041362
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adx Ошибки страниц происходят тогда, когда процесс обращается к странице памяти, которая отсутствует в рабочем наборе. Для устранения некоторых ошибок страниц требуется получить содержимое страницы с диска, а другие можно устранить без обращения к диску .
Справка Microsoft по TM в Windows 7. (с)
Это не противоречит тому что я написал. Читай Рихтера если интересно.

AdxОбращаю внимание на подчеркнутое. По DLL. Сборка может быть загружена статически и динамически. Про динамическую загрузку сборок рассказывать?
Давай, только это к обсуждаемому вопросу не имеет отношения. Я под DLL подразумевал код самой библиотеки .Net, а не сборки.
...
Рейтинг: 0 / 0
О применимость языков
    #39041369
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonЗимарглmayton,

В общем скачал новую платформу VS2015 и пересмотрел Scimark2.

Почти ничего не поменялось - только Си ушел в еще более дальний отрыв. ~1.5 раза быстрее дНета4 и Явы7.

Ну и немного соврал про аутсайдера - это Дельфи7 с троекратным отрывом =)
Кто захочет - пересоберет на новой Дельфе сам.
Зимаргл. А есть данные по .Net и Java7 в сравнении? Можешь табличку сделать?
https://code.google.com/archive/p/scimark-delphi/

Там есть готовые .exe под шарп, си и дельфи.

http://math.nist.gov/scimark2/ - тут исходники под Си и Яву.
javac *.java
затем классы сложить в jnt\scimark2\
запускать java jnt.scimark2.commandline


Dima TAdxпропущено...


А Вам не приходило в голову, что Managment Studio грузит сборки не просто так? Что они нужны? Что там полезный код и данные? И что там при старте происходит множество вещей. Не понимаю, почему долгая загрузка сама по себе - это плохо.
Это к чему вообще сказано? Мысли вслух? Разделяю :)

Вообще-то я это Зимарглу писал чтобы показать ошибочность его предположения что загрузка кода с HDD узкое место.
AdxПо ошибкам. Вам (скорее Зимарглу ) не кажется, что большое количество ошибок связано с отсутствие необходимого количества физической памяти?
Подучи матчасть как виндовс устроен. Хорошая книжка Джеффри РИХТЕР "Windows для профессионалов", там все разжевано доступным языком. Вкратце: загрузка DLL в память процесса происходит маппингом файла, т.е. DLL файл выступает файлом подкачки для определенного куска адресного пространства процесса. При этом файл не читается заранее. При обращении в это место (неважно код там или данные), если реально страница памяти не существует - менеджер памяти перехватывает исключение и подгружает нужный кусок (страницу) из файла, это и показывает счетчик "ошибок страниц" в диспетчере.
Именно так. Следовательно, чем больше фремворк, тем больше своппинга. Попал в кэш - хорошо, но чтение из дискового кэша тоже недешевая операция.

Если использовать предзагрузку всего фремворка и пометить невыгружаемым - уберется сваппинг, зато долгая загрузка и сожрется немеряно памяти, и с количеством приложений память все= может кончиться. Я не видел, чтобы какая то настольная система так делала, хотя на серверной стороне вполне возможно.
...
Рейтинг: 0 / 0
О применимость языков
    #39041370
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не проверял .net native компиляцию, т.к. нет win10 под рукой.
...
Рейтинг: 0 / 0
О применимость языков
    #39041393
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл https://code.google.com/archive/p/scimark-delphi/

Там есть готовые .exe под шарп, си и дельфи.

http://math.nist.gov/scimark2/ - тут исходники под Си и Яву.
javac *.java
затем классы сложить в jnt\scimark2\
запускать java jnt.scimark2.commandline

Благодарю но не сейчас. Щас есть чем заниматься for fun. У меня на проекте application
съедает со старта 400Мб char[]. Надо разобраться что там лежит. Подозреваю что java.lang.String
что в свою очередь - какие-то последствия засилья Persistence с PGSQL. Вобщем надо разбираться.
Процедурально я уже знаю ЧТО делать но пока не знаю как.
...
Рейтинг: 0 / 0
О применимость языков
    #39041439
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TЭто не противоречит тому что я написал. Читай Рихтера если интересно.

Противоречит. Не все ошибки связаны с диском. Вы путаете разные понятия.

AdxОбращаю внимание на подчеркнутое. По DLL. Сборка может быть загружена статически и динамически. Про динамическую загрузку сборок рассказывать?
Давай, только это к обсуждаемому вопросу не имеет отношения. Я под DLL подразумевал код самой библиотеки .Net, а не сборки.[/quot]

Библиотеки .Net - это сборки, это раз. То, что они называются DLL - это ничего не значит. Важен механизм работы.
И два, у Вас идут рассуждения о Managment Studio, а теперь Вы говорите об основных библиотеках .Net.

Напишите консольное приложение "Hello world" и отключите ВСЕ системные сборки .Net.
Вы получите приложение размером в 5 кб
Оно подгрузит библиотеку mscoree размером в 300кб.
Та в свою очередь будет ссылаться на базовые библиотеки Windows (типа kernel32, user32)
Внимание вопрос. Сколько такое приложение считает с диска при запуске?

Если не знать как работает JVM и .Net, а читать книжки по общим принципам, а остальное додумывать, ничего хорошего не выйдет.
...
Рейтинг: 0 / 0
О применимость языков
    #39041456
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
ЗимарглТам есть готовые .exe под шарп, си и дельфи.


Готовые exe - не интересно. Нужно смотреть, как написан код, с какими параметрами скомпилирован.
Оптимизация и правильные ключи могут и в полтора раза скорость поднять.

В этом смысле тестовая задача интереснее. Меньше кода, проще посмотреть узкие места.
...
Рейтинг: 0 / 0
О применимость языков
    #39041463
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглИменно так. Следовательно, чем больше фремворк, тем больше своппинга. Попал в кэш - хорошо, но чтение из дискового кэша тоже недешевая операция.
Не совсем. Во-первых читается не все, а только то что надо. Во-вторых если оперативной памяти хватает, то повторного чтения не надо.
Правильнее сказать "чем больше разных объектов фремворка использовано, тем больше своппинга".

Например смотрим тот же Managment Studio загрузился до окошка выбора сервера - занял 54 Мб. Запустил свою поделку консольную на C# - 1,4 Мб.

Думаю все эти проблемы решаемы. Просто надо решать. Например FireFox 4-5 лет назад грузился чуть ли не минуту, хоть и написан на C/C++.

Опять же все зависит о задачи. Насколько критично сэкономить 10-100 Мб ОЗУ, фремворк это ж не только занимание памяти, но и облегчение и ускорение разработки.

Например поиск и удаление процесса с заданным именем
код на С
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
BOOL KillProcess(LPCTSTR pcszEXE)
{
    BOOL bRet = FALSE;
	HANDLE hProcessSnap = NULL; 
	HANDLE hProcess = NULL;
	__try
	{
		if(lstrcmp(pcszEXE, _T("")) == 0)
		{
			return FALSE;
		}
		LPTSTR pszName = NULL;
		DWORD dwKillPID = 0;
		PROCESSENTRY32 pe32 = {0}; 
		pe32.dwSize = sizeof(PROCESSENTRY32); 

		hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 

		if (hProcessSnap != INVALID_HANDLE_VALUE) 
		{
			if(Process32First(hProcessSnap, &pe32)) 
			{
				do 
				{ 
					pszName = pe32.szExeFile + lstrlen(pe32.szExeFile);
					while(pszName > pe32.szExeFile && *pszName != _TCHAR('\\')) 
						pszName--;
					if(*pszName == _TCHAR('\\')) pszName++;
					if(lstrcmpi(pszName, pcszEXE) == 0)
					{
						dwKillPID = pe32.th32ProcessID;
						bRet = TRUE;
					}
				} 
				while (!bRet && Process32Next(hProcessSnap, &pe32)); 
			}
			CloseHandle(hProcessSnap);
			hProcessSnap = NULL;
			if(dwKillPID != 0)
			{
				hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwKillPID);
				if(hProcess != NULL)
				{
					TerminateProcess(hProcess, 0);
					WaitForSingleObject(hProcess, 1000);
					CloseHandle(hProcess);
					hProcess = NULL;
				}
			}
		}
	}
	__except(EXCEPTION_EXECUTE_HANDLER)
	{
		__try
		{
			if(hProcessSnap != NULL) CloseHandle(hProcessSnap); 
			if(hProcess != NULL) CloseHandle(hProcess); 
		}
		__except(EXCEPTION_EXECUTE_HANDLER)
		{
		}
	}
    return (bRet); 
}

Код на C#
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        static Boolean KillProcess(String ProcName) {
            Process[] Processes = Process.GetProcesses();
            foreach (Process Prs in Processes) {
                if (Prs.ProcessName == ProcName) {
                    try {
                        Prs.Kill();
                        return true;
                    } catch(System.ComponentModel.Win32Exception) {
                        Console.WriteLine("Ошибка закрытия {0}", ProcName);
                    }
                }
            }
            return false;
        }


Согласись что второй вариант заметно компактнее.
ЗимарглЕсли использовать предзагрузку всего фремворка и пометить невыгружаемым - уберется сваппинг, зато долгая загрузка и сожрется немеряно памяти, и с количеством приложений память все= может кончиться. Я не видел, чтобы какая то настольная система так делала, хотя на серверной стороне вполне возможно.

Не проверял .net native компиляцию, т.к. нет win10 под рукой.
Я пока до этого не дошел в шарпе, ничего не скажу. Пока "Hello world" осваиваю :)

По поводу предварительных компиляций я так понял что это есть как минимум начиная с 4.0 которая под XP работает, но там есть своя специфика: компилить надо на компе где будет работать, еще кое-какие ньюансы надо учесть. Есть вместе с фрэймворком NGEN.EXE , который этой компиляцией занимается если попросить.
Глубоко не вникал, рано мне еще, читал в книге "Дж. Рихтер CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#"
...
Рейтинг: 0 / 0
О применимость языков
    #39041484
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TСогласись что второй вариант заметно компактнее.

... Глубоко не вникал, ...

А так же использует кучу классов из сборок, которые мы не собираемся грузить из за экономии времени загрузки. Нет уж, только хардкор.
...
Рейтинг: 0 / 0
О применимость языков
    #39041494
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Зимаргл Следовательно, чем больше фремворк, тем больше своппинга.

Если использовать предзагрузку всего фремворка и пометить невыгружаемым - уберется сваппинг, зато долгая загрузка и сожрется немеряно памяти, и с количеством приложений память все= может кончиться. Я не видел, чтобы какая то настольная система так делала, хотя на серверной стороне вполне возможно.

Зачем Вам ВЕСЬ фреймворк? Первое предложение неверно в корне.
...
Рейтинг: 0 / 0
О применимость языков
    #39041502
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Adx,

я тебя понять не могу к чему ты все адресованное мне написал. У нас с Зимарглом было обсуждение проблемы подкачки с диска (заметь мы друг-друга поняли), а тут ты со своими постами в какую-то другую сторону, я честно не понимаю к чему ты это все написал.
Давай проще, начни с конца: пиши сразу к чему ты ведешь, что доказываешь, что я по твоему не понимаю. А я тебе отвечу так оно или нет.
...
Рейтинг: 0 / 0
О применимость языков
    #39041503
Adx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adx
Гость
Dima TЗапустил свою поделку консольную на C# - 1,4 Мб.

Это очень много. Ищите, где лишний код ;)
...
Рейтинг: 0 / 0
О применимость языков
    #39041506
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AdxЗимарглТам есть готовые .exe под шарп, си и дельфи.


Готовые exe - не интересно. Нужно смотреть, как написан код, с какими параметрами скомпилирован.
Оптимизация и правильные ключи могут и в полтора раза скорость поднять.

В этом смысле тестовая задача интереснее. Меньше кода, проще посмотреть узкие места.
Там есть исходный код. Бери, компилируй с разными ключами. Смотри код.

Я собственно, потому результаты и не стал выкладывать, что у каждого они будут немного свои.


Dima T.... Запустил свою поделку консольную на C# - 1,4 Мб.
...
Опять же все зависит о задачи. Насколько критично сэкономить 10-100 Мб ОЗУ, фремворк это ж не только занимание памяти, но и облегчение и ускорение разработки.
...

Ты не тот скорее всего параметр смотришь. Минимальный футпринт дНет приложения занимает примерно 10Мб в памяти. Я писал выше, что смотреть в диспетчере задач.
К примеру тот же Скимарк занимает 3Мб в Си варианте и 11Мб в С#.

Насколько критично 50Мб Озу на процесс вебсервера можешь посмотреть в статье про multitenant JVM выше по топику.
...
Рейтинг: 0 / 0
О применимость языков
    #39041511
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 2000х виндах я как-то ради интереса анлизировал зависимости консольного HelloWorld приложения.
Вобщем оно всегда зависит от user*.dll, kernel*.dll, gdi*.dll + еще пяток библиотек.
...
Рейтинг: 0 / 0
25 сообщений из 296, страница 9 из 12
Форумы / Программирование [игнор отключен] [закрыт для гостей] / О применимость языков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]