�@Kernel���W���[���ɒ�`����Ă���ufork�v���\�b�h���g���ƁARuby�v���O�������������g�̕��g�ƂȂ�悤�ȃv���Z�X�����āA�ʂ̃v���Z�X�Ƃ��ď������s�킹�邱�Ƃ��ł��܂��B
�@�`���Łu���ɂ�鍂������_����Thread�N���X���g�����Ƃ͓���v�Ə����܂������A�ufork�v���s���ƁAOS���x���ŕʂ̃v���Z�X����������܂��BOS�͊e�v���Z�X��CPU�R�A��U�蕪���Ă���̂ŁA�ufork�v�ɂ���Ď��Ԃ̂����鏈�������܂����U���ł���\��������܂��B�܂��A�ufork�v���ꂽ�v���Z�X�͐e�v���Z�X�ƕʂ̐��E�œ����Ƃ��������b�g������܂��B
�@���������_����ł͂���܂���B�p�ɂ�fork����ƁAfork�̂��߂̃I�[�o�[�w�b�h�������ł��Ȃ��Ȃ�܂����AOS�̃V�X�e���R�[���Ɉˑ�����@�\�Ȃ̂ŁAfork�V�X�e���R�[���������Ȃ��悤�ȃV�X�e���ł͗��p���邱�Ƃ͂ł��܂���BWindows��fork�V�X�e���R�[���������Ȃ��悤�ł��̂ŁAfork�̉��b�ɂ������邱�Ƃ͎c�O�Ȃ���ł��܂���B
�@�ł́Aprocess03.rb��process04.rb�ɗ�������܂��傤�B�ǂ����1����i!�j�����Ɂu0.001�v�𑫂����ނ悤�ȏ������s���܂��B�Ⴂ�́Aprocess03.rb�̓v���Z�X���t�H�[�N���Ď��s���Ă���Aprocess04.rb�̓t�H�[�N�����ɒ������s���Ă���_�ł��B
f = 0.0 started_time = Time.now.to_i 3.times do fork do 100000000.times { f += 0.001 } printf("%.3f\n", f) end end Process.waitall puts "it takes #{Time.now.to_i - started_time} s"
f = 0.0 started_time = Time.now.to_i 3.times do 100000000.times { f += 0.001 } printf("%.3f\n", f) f = 0 end puts "it takes #{Time.now.to_i - started_time} s"
$ ruby process03.rb 100000.000 100000.000 100000.000 it takes 12 s
$ ruby process04.rb 100000.000 100000.000 100000.000 it takes 26 s
�@process03.rb��process04.rb����͓����ł��B�܂��A1�s�ڂŕϐ�f��0.0�ŏ��������A2�s�ڂŌ��݂̎������擾���A������uto_i�v���\�b�h��UNIX�����ɕϊ����ĕϐ�started_time�Ɋi�[���܂��B
�@����4�s�ڂ���́u3.times�v�Ƃ��̃u���b�N�ŁAprocess03.rb�ł̓v���Z�X��3��t�H�[�N���Ă��܂��B�ufork�v���\�b�h�̃u���b�N�����Ƃ��āAf��1����u0.001�v�𑫂����ނ悤�ȏ�����^���Ă��܂��Bprocess04.rb�́A�P�ɒ����I��1����u0.001�v�𑫂����ނ悤�ȏ������s���Ă��܂��B
�@�Ō�̍s�ŁA�ǂ���̃X�N���v�g���A���݂�UNIX�����ƊJ�n����UNIX�����̍������A�������Ԃ��Z�o���Ă��܂��B
�@�uhtop�v�Ƃ����c�[�����g���āAprocess03.rb��process04.rb�̎��s�̗l�q���ׂĂ݂܂��傤�B
�@�����̒ʂ�A�t�H�[�N�����ꍇ�́uruby process03.rb�v�Ƃ����v���Z�X��3�����オ���Ă��邱�Ƃ�������܂��B�����Ă��̌���I��OS�ł́ACPU�ɕ��ׂ��|����悤�ȃv���Z�X�͂Ȃ�ׂ��ʁX��CPU�R�A�Ɋ��蓖�Ă�悤�ɂ���̂ŁAprocess03.rb�̕����������Ԃ��Z���ς�ł��܂��B
�@�܂��A�q�v���Z�X�̓t�H�[�N���ꂽ���_�ŁA���ꂼ�ꃁ������ԂȂǂ��قȂ鐢�E�œ������ƂɂȂ�܂��B�ł��̂ŁAprocess03.rb��6�s�ڂŕϐ�f�����������Ă��A���̎q�v���Z�X�̕ϐ�f�ɉe�����邱�Ƃ͂Ȃ��̂ŁA������Ƃ�����̎q�v���Z�X�ł��u100000.000�v�Ƃ����v�Z���ʂ������Ă��܂��B
�@����́ARuby�̃X���b�h�A�t�@�C�o�[�A�v���Z�X�Ƃ������d�g�݂��w�т܂����B���ɁARuby��IO�N���X��fork���\�b�h�Ƃ������d�g�݂́AOS���̂��̂Ɛ[���Ȃ����Ă��܂��B
�@�Ⴆ��fork���\�b�h�ł����AUNIX�nOS�̕W���I�ȁu�V�X�e���R�[���v�̒��ɁA�Y�o���u�t�H�[�N�v�Ƃ������̂�����܂��B����͂��܂�ڍׂɗ������炸�ɐ�����������ł����A�������������������܂���B���̕ӂ�̘b��[���������邽�߂ɂ�OS�̎d�g�݂�V�X�e���R�[�����w�ԕK�v������̂ŁA�X�L���A�b�v�̂��߂ɂ��A���Е����邱�Ƃ������߂��܂��B
�@�����Ruby�̍����p�A���^�v���O���~���O�ɂ��ĉ���������Ǝv���܂��B���^�v���O���~���O�ɂ��ė������邱�Ƃ́A���S�҂��������ݏo���āA�G�L�X�p�[�g�ɂȂ邽�ɂ͕K�{�ł��B���y���݂ɁI
���c �D�^�iRails�Z�p�ҔF��V���o�[�������쐬�ҁj
�C�^���A�A���[�}���܂�B���w���̂���HSP�ɏ��߂ĐG��A�v���O���~���O�̊y������m��B�I�[�v���\�[�X��n�b�J�[�J���`���[���D�ށBC#����Ruby�ɓ]�������Ƃ��ɁA���I�^�t������̏_���^�v���O���~���O�̖��͂Ɋ������ARuby�ƂƂ��Ƀv���O���}�[�Ƃ��Ă̐l������ތ��ӂ��ł߂�B
���݂͓ޗǐ�[�Ȋw�Z�p��w�@��w�Ŋw���Ƃ��ď������邩�����A������ЃA�W���C���E�F�A�Ńv���O���}�[�Ƃ��ď]���BRuby on Rails�ɂ��R���V���[�}�[������Web�T�[�r�X�̊J���Ȃǂɐs�͂��Ă���B
�D���ȃ��\�b�h�́Adefine_method�B
Twitter�F@Mozamimy�A�u���O�Fhttp://blog.quellencode.org/
�R�� ���i�iRuby�Ɩ��J����7�N�j
���Ɍ����܂�B1997�N����x���`���[�n�̃p�b�P�[�W�x���_�[��10�N�ԋΖ��B�����A�g�p���Ă��������Java�ƃT�[�o�[�T�C�hJavaScript�B
2007�N���IT�R���T����Ђɓ]�E���ARuby�Əo����ďՌ�����B��V�X�e����Ruby on Rails�Œu��������v���W�F�N�g�ɏ]���B����ȗ�Ruby��ŁARuby on Rails�̃v���O�C����gem���J���B
2013�N���A������ЃA�W���C���E�F�A�ɏ����B�A�W���C���Ȏ�@�ŁARuby on Rails���g���Ċ�ƌ����V�X�e�����\�z����Ɩ��ɏ]���B
Ruby�������B
Twitter�F@spring_kuma�AFacebook�F�R�� ���i
Copyright © ITmedia, Inc. All Rights Reserved.