Re[17]: КОП в linux
От: Cyberax Марс  
Дата: 04.07.06 08:30
Оценка: -1
VladD2 wrote:
> C>Так же порядка 5-10 секунд. Обычно меняется один-два файла, которые
> надо перекомпилировать, а пересвязать исполняемый файл.
> Понятно, значит 5 секунд из которых 10 занимает обращение к файлам.
5-10 секунд занимает непосредственно сама компиляция (вызов cl+link),
после того как граф зависимостей уже построен.

> C>На Линуксе на моей машине для того же проекта — около секунды.

> Обнови значит драйверы. Или разберись с тем что у тебя конфигурации
> винды не так.
Драйверы чего обновлять? Все как поставилось с родного
установчного диска — так и стоит.

Конфигурация Винды и так уже накручена: отключены 8.3-имена, поставлены
настройки "большого кэша", отключено отслеживание времени последнего
доступа к файлам.

> C>Обычно как раз MSVC и компилирую, а сейчас еще на DMC подсел — он

> компилирует примерно в 5-10 раз быстре MSVC для отладочных билдов.
> И как ты сравнивашь вайловые системы на VC c GCC?
А это неважно. В сканировании зависимостей компилятор не участвует. Вся
разница может быть только в разном наборе sysinclude'ов (которые не
сканируются) или в разном наборе файлов из-за условной компиляции (на
пару файлов разница).

> C>Ant на Java-проекте из 18000 файлов тоже весьма заметно задумывается —

> те же 10 секунд на сканирование зависимостей.
> Ищи проблемы в дровах или каких-то левых настройках сделанных тобой лично.
На всех остальных машинах у нас в оффисе — примерно так же с коррекцией
на мощность процессора/скорость дисков.

> C>Ну напиши простенький тест, который откроет эти файлы и прочтет их

> содержимое. Увидишь о чем я говорю.
> А зачем читать содержимое? Ты ведь об инкрементальной компиляции
> говоришь. Я правильно понял?
Для инкрементальной компиляции зависимости все равно нужно отслеживать.

Можешь спросить у eao197 (автор еще одной build-системы), если мне не
веришь.

> Полная компиляция проекта из 10К С++-файлов занимает поди пол часа или

> даже болше. Так? На них ни 10 ни 20 секунд значения иметь не убдут.
Полная компиляция делается раз в день, там действительно не важны 10-20
секунд.

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Diagnostics;

namespace ConsoleApplication1
{
     class Program
     {
         static void Main(string[] args)
         {
             Stopwatch timer = Stopwatch.StartNew();
             string[] files = Directory.GetFiles(@"c:/windows/system32");
             DateTime oldestTime = DateTime.Now;

             foreach (string file in files)
             {
                 DateTime dt = File.GetLastWriteTime(file);
                 try
                 {
                     FileStream fl = File.OpenRead(file);
                     fl.Dispose();
                 } catch (IOException ex) { }
                 oldestTime = dt > oldestTime ? dt : oldestTime;
             }

             Console.WriteLine(timer.Elapsed);
             Console.WriteLine("В каталоге " + files.Length + " файлов.");
             Console.WriteLine("Самый старый файл обновлялся " + 
oldestTime);
             int a = 0;
         }
     }
}

> А вот его результат:
> 00:00:00.8381922
> В каталоге 22824 файлов.
> Самый старый файл обновлялся 03.07.2006 22:35:43

E:\Users\Cyberax\TestSpeed\TestSpeed\bin\x64\Debug>TestSpeed.exe
00:00:02.1704177
? ???????? 5680 ??????.
????? ?????? ???? ?????????? 7/4/2006 1:07:50 PM

Машина — двухпроцессорный AMD64 с 4Гб памяти (нет у меня FW2 на моем
компьютере) и отключенными редиректором FS.

Теперь мой ход:
import os

DIR = '/var/lib/vpopmail/[хрумс]/Maildir/cur'
maxsize = 0
for f in os.listdir(DIR):
     path = os.path.join(DIR, f)
     fl = open(path,"rb")
     fl.close()
     sz = os.path.getsize(path)
     if sz>maxsize: maxsize=sz

print "The biggest readable file is %d bytes." % maxsize


Результат:
root@scblinux:~/test-sp# time python test.py
The biggest readable file is 33748150 bytes.

real    0m0.118s
user    0m0.064s
sys     0m0.052s

root@scblinux:~/test-sp# ls /var/lib/vpopmail/[хрумс]/Maildir/cur | wc
    9062    9062  244345
root@scblinux:~/test-sp# cat /proc/cpuinfo | grep "model name"
model name      : AMD Athlon(tm) 64 Processor 3000+
root@scblinux:~/test-sp# cat /etc/issue.net
Debian GNU/Linux testing/unstable
root@scblinux:~/test-sp# cat /etc/fstab | grep "/ "
/dev/md2        /               reiserfs notail         0       1
Posted via RSDN NNTP Server 2.0
Sapienti sat!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.