Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];

Вниз

Сравнение компиляторов - часть 2   Найти похожие ветки 

 
Фэ   (2002-02-21 12:39) [80]

Выложил регрессию и остальные обновил + исходники
ftp://ftp.pi8plus.ru/pub/download/compare/
ftp://ftp.pi8plus.ru/pub/download/compare/compare.htm


 
Romkin   (2002-02-21 14:17) [81]

Мда, все отлично, но самое прикольное, что у меня нет доступа к ftp, только http. Нет ли доступа через этот протокол?


 
Фэ   (2002-02-21 15:08) [82]

Чуть позже доофрмлю по человечески и выложу на сайт
Хотя лови.

http://www.pi8plus.ru/win/compare/compare.htm


 
Romkin   (2002-02-21 15:37) [83]

Спасибо. Не хватает только, на каком компьютере считалось


 
Фэ   (2002-02-21 16:50) [84]

Не спешите, все выложу.
P-III 1000EB,Epox i815EBP,256M, Win98SE


 
VuDZ   (2002-02-21 17:41) [85]

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

class CCPUInfo
{
public:
CCPUInfo();
~CCPUInfo();
bool WriteTo(LPSTR szFName);
bool m_bReady;
private:
char *m_cCPUName;
DWORD m_dwCPUClock,
m_dwMemtotal,
m_dwAval;
__int64 GetCpuTick();
int GetCpuFrequency();
};

CCPUInfo::CCPUInfo()
{
m_cCPUName = new char[13];
m_bReady = false;
if (!m_cCPUName)
return;
m_bReady = true;
ZeroMemory(m_cCPUName, 13);

void * v = m_cCPUName;
_asm
{
xor eax, eax
cpuid
mov esi, v
mov [esi], ebx
mov [esi + 4], edx
mov [esi + 8], ecx
}

m_dwCPUClock = GetCpuFrequency();

MEMORYSTATUS memstat;
GlobalMemoryStatus(&memstat);
m_dwMemtotal = memstat.dwTotalPhys;
m_dwAval = memstat.dwAvailPhys;

}

CCPUInfo::~CCPUInfo()
{
if (m_bReady)
delete m_cCPUName;
}

__declspec(naked)
__int64 CCPUInfo::GetCpuTick()
{ __asm {
rdtsc
ret
} }

int CCPUInfo::GetCpuFrequency()
{
__int64 Frequency,
TimerCount1,
TimerCount2,
CpuCount1,
CpuCount2; if (!QueryPerformanceFrequency ((LARGE_INTEGER*) &Frequency)) return 0;

QueryPerformanceCounter ((LARGE_INTEGER*) &TimerCount1);

CpuCount1 = GetCpuTick ();
Sleep (500);
CpuCount2 = GetCpuTick ();
QueryPerformanceCounter ((LARGE_INTEGER*) &TimerCount2);
if (TimerCount1 == TimerCount2) return 0;
return (int) ((double) ((CpuCount2 - CpuCount1) * Frequency) /
(double) (TimerCount2 - TimerCount1));
}

bool CCPUInfo::WriteTo(LPSTR szFName)
{
if (szFName == NULL)
return false;

ofstream ofs((const char*)szFName);
if (ofs.is_open() == 0)
return false;

ofs << "CPU Vendor: " << m_cCPUName << endl;
ofs << "CPU Frequency: " << m_dwCPUClock / 1000000 << "\tin MHz" << endl;
ofs << "Total physical memory: " << (m_dwMemtotal / 1048576) << "\tin Mb"<< endl;
ofs << "Physical memory available: " << (m_dwAval / 1048576) << "\tin Mb" << endl;

ofs.flush();
ofs.close();

return true;
}


использование:
CCPUInfo ci;
ci.WriteTo("C:\\info.txt");

есть ещё вариант, который выводит инфу о проце - Атлон, пень и пр., о он очень большой. Можно добавить фишки на фкус, типа, имя тестер, дата, время...

C.U.


 
Фэ   (2002-02-21 18:18) [86]

Все это есть, просто не хотелось засорять пока.


 
VuDZ   (2002-02-21 18:24) [87]

э... что-то каталог regression пуст... или у меня проблемы со зрением-с...


 
iZEN   (2002-02-22 00:34) [88]

Представляю тесты на сортировку массива методом пузырька для Delphi и Java.

Аппаратное обеспечение: AMD Duron 700МГц, 128МБайт SDRAM133.
Программное обеспечение: MS Windows 2000 Professional RUS; Borland Delphi 6.0 Enterprise; Borland JBuilder 6.0 Personal с Sun JRE/JDK1.4.0.
Условия тестирования: компиляция без отладочной информации; запуск программы из IDE.

Среда: Borland Delphi 6.0 Enterprise
Исходный код: Borland ObjectPascal

procedure BubbleSort (var a: array of Double);
var
I, J: Integer;
T: Double;
begin
for I := High(A) downto Low(A) do
for J := Low(A) to High(A) - 1 do
if A[J] > A[J + 1] then
begin
T := A[J];
A[J] := A[J + 1];
A[J + 1] := T;
end;
end;

Тип массива: заполненный элементами со значениями функции rand() на интервале (0;1.7e308)
Размер массива: 100000 элементов
Тип элемента массива: double (8 байт)
Среднее время сортировки (миллисекунды): 492338


 
iZEN   (2002-02-22 00:35) [89]

Аппаратное обеспечение: AMD Duron 700МГц, 128МБайт SDRAM133.
Условия тестирования: компиляция без отладочной информации; запуск программы из IDE.

Среда: Borland JBuilder 6.0 Personal с Sun JRE/JDK1.4.0.
Свойства среды:

System:
os.arch="x86";os.name="Windows 2000";os.version="5.0";
sun.os.patch.level="Service Pack 2";sun.arch.data.model="32";
JVM:
java.vm.name="Java HotSpot(TM) Client VM";java.vm.vendor="Sun Microsystems Inc.";
java.vm.version="1.4.0-b92";java.runtime.name="Java(TM) 2 Runtime Environment, Standard Edition";
java.runtime.version="1.4.0-b92";

Исходный код: Java

public static void bubbleSort(double[] data) {
double temp = 0;
for(int i = data.length; --i >= 0;) {
boolean swapped = false;
for(int j = 0; j < i; j++) {
if(data[j] > data[j+1]) {
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
swapped = true;
}
}
if(!swapped) return;
}
}

Тип массива: заполненный элементами со значениями функции rand() на интервале (0;1.7e308)
Размер массива: 100000 элементов
Тип элемента массива: double (8 байт)
Среднее время сортировки (миллисекунды): 314745


 
iZEN   (2002-02-22 00:36) [90]

Аппаратное обеспечение: AMD Duron 700МГц, 128МБайт SDRAM133.
Условия тестирования: компиляция без отладочной информации; запуск программы из IDE.

Среда: Borland JBuilder 6.0 Personal с Sun JRE/JDK1.4.0.
Свойства среды:

System:
os.arch="x86";os.name="Windows 2000";os.version="5.0";
sun.os.patch.level="Service Pack 2";sun.arch.data.model="32";
JVM:
java.vm.name="Java HotSpot(TM) Client VM";java.vm.vendor="Sun Microsystems Inc.";
java.vm.version="1.4.0-b92";java.runtime.name="Java(TM) 2 Runtime Environment, Standard Edition";
java.runtime.version="1.4.0-b92";

Исходный код: Java

public static void bubbleSortStandart(double[] a) {
double t;
for(int i = a.length - 1; i >= 0; i--)
for(int j = 0; j < a.length - 1; j++)
if(a[j] > a[j + 1]) {
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}

Тип массива: заполненный элементами со значениями функции rand() на интервале (0;1.7e308)
Размер массива: 100000 элементов
Тип элемента массива: double (8 байт)
Среднее время сортировки (миллисекунды): 503667


 
iZEN   (2002-02-22 00:38) [91]

Так что оптимизация алгоритма много значит (сравните последние два теста Java).


 
VuDZ   (2002-02-22 00:54) [92]

на счт оптимизации:

for i := 2 to N-1 do begin
if A[i] <> 0 then begininc(num); // count prime
j := i + i;
while j <= N-1 do begin
A[j] := 0;
j := j + i;
end;
end
end;


вот с такой элементарной вставкой скорость увеличиватся в 5 раз :>


 
VuDZ   (2002-02-22 02:19) [93]

вот некоторые результаты, которые поразили мир (или по крайней мере меня :> )

BubbleSort:
10000 nums, 10 times
MS VC6.0 1181
C# 1220
IntelCCompiler 1062

Erratosphen:
300"000 nums, 10 times
MS VC6.0 984
MS C# 985
IntelCCompiler 1039

ну как всегда нафоне играет музыка, так что есть небольшой разброс.
но что странно, результаты для решета совпадали вплоть до последних 2х измерений один в один...
завтра попробую заняться тестми в плотную

C.U.



Страницы: 1 2 3 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.009 c
1-9462
Creecker Dikar
2002-03-24 13:43
2002.04.04
Как можно сохранить иконку из компонента Image в BMP файл?


1-9454
Andrey007
2002-03-25 10:29
2002.04.04
Можно ли создать своё окошко для подсказки (hint) и если да, то как?


3-9414
Draculenok
2002-03-13 12:11
2002.04.04
Создание отчета по нескольким линям мемо( чуть не хватает.....)


3-9402
Dima Kopachev
2002-03-11 10:35
2002.04.04
Как обработать перемещение записи


1-9557
olookin
2002-03-24 15:21
2002.04.04
TChart иногда ведет себя странно





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский