මෙතන කියන්නේ මේ වගේ ක්රමයක් මට තේරුන හැටියට, source code එක binary වලට compile කරාට පස්සේ ඒක තියෙන්නේ binary විදියටනේ application එකේ, ඊට පස්සේ මේක තමයි user run කරන්නේ. පොඩි software වගේ නෙවෙයි ලොකු software එකක් හදනකොට හැම තිස්සේම optimize කිරිමට වඩා වැදගත් වෙන්නේ maintain කරන්න පුලුවන් වීමයි. එතකොට ඊළගට job එකට එන කෙනාට පුලුවන් documentation එක බලලා කලින් කරපු කෙනාගේ තැන ඉදලා software එක update කරන්න.
නමුත් මේ ක්රමයේ අවාසිය තමයි software එකේ performance එක අඩු වෙනවා අළුත් hardware වලට එනකොට ,අළුත් OS වලට එනකොට, අළුත් API වලට එනකොට මොකද application එක හදලා තියෙන්නේ පරණ hardware/OS/API වලට ගැලපෙන්න නිසයි, ඒ වගේම high performance code වලත් performance එක අඩු වෙනවා.
මේක source code එකේ ඉදලා ආයි optimize කරන්න ගියොත් අළුත් hardware වලට එතකොට code ටික සංකීර්ණ නිසා සෑහෙන්න කාලයක් ,ශ්රමයක් යනවා, විශේෂයෙන්ම high performance code ලියලා තියෙනවා නම් ඒකට තවත් කාලය යනවා මොකද ඒවා ගොඩක් වෙලාවට ලියලා තියෙන්නේ assembly වලින් නැත්නම් c++,c වලින් නිසා, මේවලින් ලියපු software වල memory leak හරියට තියෙනවා , garbage collect කරන්න ඕනේ manually ඒවා කරේ නැත්නම් RAM එක ඕනේ අහස උසට වගේ , විශේෂයෙන්ම මේක ලොකු software වලට තදින්ම බලපානවා. දැනටම මම දැකලා තියෙනවා 3D max වලදි , daz model එකක් import කරාම textures එක්ක, ඒකට memory එක යනවා 8GB වෙනකම්. ඒ වගේම developers ලට කාලයට/ගහන lines වලට ගෙවන නිසා, වියදමත් වැඩියි.
දැකලා ඇති නේ සමහර පරණ dos games, අළුත් OS වල වැඩ කරන්නෙත් නෑ. .NET වල පවා සමහර methods, classes, වගේ outdated වෙනවා එතකොට ඒවාට ගැලපෙන්න ලියපු software අළුත් .NET versions වලට වැඩ කරන්නේ නෑ මොකද අළුත් එකේදි ඒ methods, classes නෑ. මේ ප්රශ්ණය software වලට විතරක් නෙවෙයි, Photoshop වලින් හදන projects වලට පවා තියෙනවා. මේක වලක්වන්නයි backward compatibility තියෙන්නේ windows වල පවා.
මේ ක්රමයෙන් කරන්නේ,source code බලන්නේ නැතුව compiled කරලා තියෙන application එකේ binary codes optimize කරන එකයි, එතකොට ඒක අළුත් hardware වලට එනකොට performance එකේ ප්රශ්ණයක් පෙන්වන්නේ නෑ, developers ලට software එක maintain කරන්නත් පුලුවන්, users ලට fast optimized applications හම්බ වෙනවා, මේ ක්රමය නිසා software, video games, OS වගේ ඕනම එකක් ගොඩක් fast වෙනවා. නමුත් මෙතනින් අළුත් OS/API වලට software එක optimize කරනවා කියලා නෑ, ඒක නිසා developers ලට සමහර විට ඒවා ගැන manually බලන්න වෙයි.
මේක අළුත් ක්රමයක් නෙවෙයි හැබැයි, 2011 Skyrim ආවම, ඒකේ performance එක ගොඩක් අඩුයි, ඒ වගේම ඒක 4GB එකෙන් එහා memory map කෙරුවේ නෑ, ඒක නිසා mod community එකෙන් කරේ, Skyrim එකේ binary code optimize කරා ,මේක කරාට පස්සේ skyrim වල performance එක ගොඩක් වැඩි වුනා, පස්සේ Bethesda ලාම patch එකක් නිකුත් කරලා ප්රශ්ණය හැදුවා. නමුත් මේ MIT ක්රමය automated ක්රමයක් වගේ, ඒක ටිකක් සංකීර්ණ ක්රමයක් කියලා මට හිතෙන්නේ, මොකද assembly manual optimize කරන එකත් අමාරු වැඩක්, ඒක automated දාන්න algorithm එකක් හදන එක ඊට වඩා අමාරු වෙයි කියලා මට හිතෙනවා. මේක ඒක නිසා ඇත්තටම ගොඩක් ලොකු දෙයක්..
නමුත් මේ ක්රමයේ අවාසිය තමයි software එකේ performance එක අඩු වෙනවා අළුත් hardware වලට එනකොට ,අළුත් OS වලට එනකොට, අළුත් API වලට එනකොට මොකද application එක හදලා තියෙන්නේ පරණ hardware/OS/API වලට ගැලපෙන්න නිසයි, ඒ වගේම high performance code වලත් performance එක අඩු වෙනවා.
මේක source code එකේ ඉදලා ආයි optimize කරන්න ගියොත් අළුත් hardware වලට එතකොට code ටික සංකීර්ණ නිසා සෑහෙන්න කාලයක් ,ශ්රමයක් යනවා, විශේෂයෙන්ම high performance code ලියලා තියෙනවා නම් ඒකට තවත් කාලය යනවා මොකද ඒවා ගොඩක් වෙලාවට ලියලා තියෙන්නේ assembly වලින් නැත්නම් c++,c වලින් නිසා, මේවලින් ලියපු software වල memory leak හරියට තියෙනවා , garbage collect කරන්න ඕනේ manually ඒවා කරේ නැත්නම් RAM එක ඕනේ අහස උසට වගේ , විශේෂයෙන්ම මේක ලොකු software වලට තදින්ම බලපානවා. දැනටම මම දැකලා තියෙනවා 3D max වලදි , daz model එකක් import කරාම textures එක්ක, ඒකට memory එක යනවා 8GB වෙනකම්. ඒ වගේම developers ලට කාලයට/ගහන lines වලට ගෙවන නිසා, වියදමත් වැඩියි.
දැකලා ඇති නේ සමහර පරණ dos games, අළුත් OS වල වැඩ කරන්නෙත් නෑ. .NET වල පවා සමහර methods, classes, වගේ outdated වෙනවා එතකොට ඒවාට ගැලපෙන්න ලියපු software අළුත් .NET versions වලට වැඩ කරන්නේ නෑ මොකද අළුත් එකේදි ඒ methods, classes නෑ. මේ ප්රශ්ණය software වලට විතරක් නෙවෙයි, Photoshop වලින් හදන projects වලට පවා තියෙනවා. මේක වලක්වන්නයි backward compatibility තියෙන්නේ windows වල පවා.
මේ ක්රමයෙන් කරන්නේ,source code බලන්නේ නැතුව compiled කරලා තියෙන application එකේ binary codes optimize කරන එකයි, එතකොට ඒක අළුත් hardware වලට එනකොට performance එකේ ප්රශ්ණයක් පෙන්වන්නේ නෑ, developers ලට software එක maintain කරන්නත් පුලුවන්, users ලට fast optimized applications හම්බ වෙනවා, මේ ක්රමය නිසා software, video games, OS වගේ ඕනම එකක් ගොඩක් fast වෙනවා. නමුත් මෙතනින් අළුත් OS/API වලට software එක optimize කරනවා කියලා නෑ, ඒක නිසා developers ලට සමහර විට ඒවා ගැන manually බලන්න වෙයි.
මේක අළුත් ක්රමයක් නෙවෙයි හැබැයි, 2011 Skyrim ආවම, ඒකේ performance එක ගොඩක් අඩුයි, ඒ වගේම ඒක 4GB එකෙන් එහා memory map කෙරුවේ නෑ, ඒක නිසා mod community එකෙන් කරේ, Skyrim එකේ binary code optimize කරා ,මේක කරාට පස්සේ skyrim වල performance එක ගොඩක් වැඩි වුනා, පස්සේ Bethesda ලාම patch එකක් නිකුත් කරලා ප්රශ්ණය හැදුවා. නමුත් මේ MIT ක්රමය automated ක්රමයක් වගේ, ඒක ටිකක් සංකීර්ණ ක්රමයක් කියලා මට හිතෙන්නේ, මොකද assembly manual optimize කරන එකත් අමාරු වැඩක්, ඒක automated දාන්න algorithm එකක් හදන එක ඊට වඩා අමාරු වෙයි කියලා මට හිතෙනවා. මේක ඒක නිසා ඇත්තටම ගොඩක් ලොකු දෙයක්..



