Форум: "Потрепаться";
Текущий архив: 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