MinGW

MinGW�́A�t���[�œ���ł���GNU��C�R���p�C��(gcc)��Windows�łł��B
�s�̂̃R���p�C�����g��Ȃ��Ă��AMinGW��Tcl/Tk�̎��s�`�����쐬������A
C�����Tcl/Tk�̊g���p�b�P�[�W���쐬�ł��܂��B

MinGW-1.1�̍\���͈ȉ��̒ʂ�ł��B

MinGW��DOS�ォ��g�����Ƃ��ł��܂����AMSYS��Cygwin����g���������֗��ł��B
�����ł́AMSYS �� Cygwin����MinGW���g�����@���ȒP�ɐ������܂��B

MSYS & MinGW

�ŏ��́AMSYS����MinGW���g�����@�ł��B
MSYS�́AMinGW�‹���configure�𓮂������߂̊‹��ł��B
Cygwin�ɔ�ׂăC���X�g�[�����ȒP�ł��B

�܂��AMSYS-1.0.8-i686-2002.05.13-1.exe�����s����MSYS���C���X�g�[�����܂��B
�C���X�g�[������ꏊ�́A�Ƃ肠�����A�f�t�H���g�� C:/msys/1.0 �ɂ��܂��B
�C���X�g�[������MinGW�̂���ꏊ�𕷂���܂����A�Ȃ��ꍇ�́An ����͂��܂��B
���Ƃ́A�K����Enter�L�[�𐔉�łĂ΃C���X�g�[���͊������܂��B
���ɁAMinGW���C���X�g�[�����܂��B
MSYS���N�����܂��BMSYS�̃R���\�[���E�E�B���h�E���J���̂ŁA
�ȉ��̃R�}���h����͂��āAMinGW���C���X�g�[�����܂��B

$ cd /mingw
$ tar xvzf MinGW-1.1.tar.gz

�����MSYS��MinGW�̃C���X�g�[���͊����ł��B

Cygwin & MinGW

����ACygwin�̊‹��ł�MinGW���g���܂��B
�C���X�g�[����setup.exe�ōs���̂ł����A�����Ȃ�̂Ŋ������܂��B(^^;)
Cygwin�̍ŐV��1.3.10�́AMinGW-1.1��1.2��C�����^�C����w32api���܂�ł��܂��B
GNU C�R���p�C��(gcc)�̃o�[�W�����́A2.95.3-5�ł��B
Cygwin��gcc���g���ꍇ�A�f�t�H���g�ł́APOSIX�G�~�����[�V�������C���ł���
cygwin1.dll��������s�`������������܂��B Windows�l�C�e�B�u�Ȏ��s�`���𐶐�����ɂ́A
gcc��-mno-cygwin�I�v�V�������w�肵�܂��B

Tcl/TK���r���h����

Tcl/Tk 8.3.4�̃\�[�X�R�[�h���r���h����ɂ́A�ȉ��̂悤�ɍs���܂��B
Cygwin�̏ꍇ�́Aconfigure��-mno-cygwin�I�v�V�����t����Makefile�𐶐����Ă���܂��B

$ cd tcl8.3.4/win
$ ./configure --enable-gcc --enable-threads
$ make

$ cd tk8.3.4/win
$ ./configure --enable-gcc --enable-threads
$ make

�o�������s�`����cygwin1.dll�Ɉˑ����Ă��Ȃ����𒲂ׂ�ɂ�objdump�R�}���h���g���܂��B

$ objdump -p tclsh83.exe | grep "\.dll"
	DLL Name: msvcrt.dll
	DLL Name: KERNEL32.dll
	DLL Name: tcl83.dll
	
$ objdump -p wish83.exe | grep "\.dll"
	DLL Name: msvcrt.dll
	DLL Name: KERNEL32.dll
	DLL Name: USER32.dll
	DLL Name: tcl83.dll
	DLL Name: tk83.dll

cygwin1.dll�̑����msvcrt.dll���\�������΁A���Ȃ��ł��傤�B
���Ȃ݂ɁAmsvcrt.dll�́AMS�Ђ�C�����^�C���ŁAWindows�ɕW���Ŕ�����Ă��܂��B

gcc�̍œK���I�v�V����

��ʂɁAgcc�̍œK���@�\�́A�s�̂̃R���p�C�������ƌ����Ă��܂��B
gcc�̍œK���I�v�V�����͈ȉ��̂悤�ɂȂ��Ă��܂��B(gcc version 2.95.3-5)
���̑��̃I�v�V�����ɂ‚��ẮA�œK���𐧌䂷��I�v�V�������Q�Ƃ��Ă��������B

�I�v�V��������
-O-O1�Ɠ���
-O0�œK�����s��Ȃ�
-O1�R�[�h�T�C�Y�팸�Ǝ��s���x�����ڎw���œK�����s��
�ϐ������W�X�^�Ɋ��蓖�Ă���A���d�����W�����v�̍œK���Ȃǂ��s��
-O2����ɍ��x�ȍœK�������s����B�قƂ�ǂ̍œK���@�\���L���ɂȂ��A
���[�v�W�J�Ɗ֐��̃C�����C���W�J�A���W�X�^�̃��l�[���͍s��Ȃ�
-O3-O2���i�񂾍œK�����s���B���[�v�W�J��֐��̃C�����C���W�J�Ȃǂ��s��
-Os�R�[�h�T�C�Y�����������邽�߂̍œK�����s���B-O0�`3�Ȃǂ̎��s���x�����コ����I�v�V�����Ƃ����p�ł��܂�
�� Pentium�ȍ~�̃v���Z�b�T�ɓ�������pgcc�̂悤�ɁA-O7�܂Ŏw��”\�ȃR���p�C��������܂��B

�ʏ�A�R���p�C���̃o�O�Ȃǂɑ������鋰�ꂪ����̂ŁA-O2���g���̂�����ł��B

CPU�ɓ��������œK��

gcc�ɂ́ACPU�ɉ������œK�����w������I�v�V����-march��-mcpu������܂��B
-march�́A�w�肵��CPU�����œ��삷��悤�ȃR�[�h���o�͂��܂��B
-mcpu�́A���n���CPU�ł����삷��悤�ȃR�[�h���o�͂��܂��B
���s���x�́A-march�̕��������Ȃ�܂��B
���ꂼ��A-march=i686�A-mcpu=pentiumpro�̂悤�Ɏg���܂��B
�w��ł���CPU�^�C�v�͋��ʂňȉ��̒ʂ�ł��B

CPU�^�C�v����
i386i386�₻�̌݊�CPU
i486i486�₻�̌݊�CPU
i586Pentium, MMX Pentium,�₻�̌݊�CPU
i686Pentium Pro, Pentium II, Pentium III, Pentium 4, Celeron�Ȃ�
pentiumi586�Ɠ���
pentiumproi686�Ɠ���
k6K6, K6-2, K6-III
athlonAthlon, Athlon MP, Athlon XP

����ɁAgcc 3.1����ȉ���CPU�^�C�v���lj�����Ă��܂��B

CPU�^�C�v����
pentium2PentiumII/Celeron(Covington, Mendocino)
pentium3PentiumIII/Celeron(Coppermine, Tualatin)
pentium4Pentium4/Celeron(Willamette, Northwood)
athlon-tbirdAthlon(Thunderbird)
athlon-4Athlon4
athlon-xpAthlon XP
athlon-mpAthlon MP

���̑��ɁAgcc 3.1����SSE���߂��g���ĕ��������_���Z���s��-mfpmath=sse�I�v�V�������lj�����Ă��܂��B

�x���`�}�[�N�e�X�g

MS�Ђ�Visual C++�Ńr���h���ꂽActiveTcl 8.3.4.1��MinGW-1.1�Ńr���h���ꂽTcl8.3.4�̃x���`�}�[�N�e�X�g���s���܂����B
�܂��́A�����TkEngine V1.0�Ńe�X�g���܂����B
���ʂ͗\�z�ɔ����āAMinGW�r���h�ł̕����኱�����Ƃ������ʂɂȂ�܂����B

�‹�TkEngine�l
ActiveTcl 8.3.4.131
Tcl8.3.4 MinGW�r���h��33

���ɁA�{�I���l���񂪁A1997�N11���Ɍ��J���ꂽTcl/Tk Benchmark Ver.1.3���g���ăe�X�g���܂����B
���̌��ʂ��AMinGW�r���h�ł̕����኱�����Ƃ������ʂɂȂ�܂����B�덷�͈̔͂�������܂���B

�‹��������s����
ActiveTcl 8.3.4.1LINE0.98�b
PAINT0.89�b
MOVE1.77�b
TOTAL3.64�b
Tcl8.3.4 MinGW�r���h��LINE0.93�b
PAINT0.85�b
MOVE1.69�b
TOTAL3.47�b

�Ō�ɁAMetaCard��Performance Benchmarks ���g���ăe�X�g���܂����B
���̌��ʂ́AMinGW�r���h�ł̕����኱�x���Ƃ������ʂɂȂ�܂����B�덷�͈̔͂�������܂���B

�‹��������s����
ActiveTcl 8.3.4.11000000 repeats1.162�b
10000 iterative factorial(100)49.942�b
10000 iterative factorial(100) with 'if'50.382�b
10000 recursive factorial(100)87.316�b
1000 exec calls16.183�b
2000 100-line file writes and reads6.199�b
10 stem generation took5.017�b
total time was216.201�b
Tcl8.3.4 MinGW�r���h��1000000 repeats1.122�b
10000 iterative factorial(100)50.803�b
10000 iterative factorial(100) with 'if'51.354�b
10000 recursive factorial(100)88.858�b
1000 exec calls16.864�b
2000 100-line file writes and reads5.398�b
10 stem generation took5.658�b
total time was220.057�b

���ꂾ���̃f�[�^�ł́A�Ȃ�Ƃ������܂��񂪁A���̃e�X�g�̌��ʂł́A
ActiveTcl��MinGW�r���h�ł͌݊p�̐��\�ŁA�\���Ɏ��p�I�ł���ƌ����܂��B
����ɁAgcc 3.1�ł͍œK���@�\�����サ�Ă���悤�ł��B

�Q�l����