PHP ද්රව්යයන් (objects) ගොඩනැගීමේදී දත්ත ඇරේ (array) එකකින් ගුණාංග (properties) පුරවා ගැනීමේ ක්රියාවලිය ‘hydration’ ලෙස හැඳින්වෙයි. සාමාන්යයෙන් මේ ක්රියාවලිය සරලයි කියලා සැලකිල්ලට ගන්නා අතර, වැඩිදුර වැඩි දත්ත ප්රමාණයක් හෝ සංකීර්ණ ව්යුහයක් ඇති වුවත් කාර්ය සාධනය අඩුවේ යැයි බොහෝ විට නොදකිනවා.
එකක් මගේ පෞද්ගලික මැප්පර් (mapper) ලයිබ්රරියාව ව්යාපෘතියකදී අතිශය මන්දගාමී බව පෙනුනේය. එය ඇරේ එකක් ගෙන, වස්තුවකට (object) පොදු පදනම් ක්රම (public methods) ඇමතුම් කරන ලදී. මට hydrator හෝ mapper ගැන වැඩිදුර දැනුමක් නැති නිසා, මෙය තනිව විසඳන්න උත්සාහ කළෙමි. කාලයක් ගත කර, කේතය පුස්තකාලයක් (library) බවට පත්වුණාත්, එය තනි පරිශීලකයාට පමණක් සීමා වූ නිසා, පසුගිය කාලයේ අත්හැර දැමුණි.
නව පරීක්ෂණයක් සඳහා මම එම ලයිබ්රරියාව නැවත අරඹා, කාර්ය සාධනය මැනුම් (benchmark) කිරීම ආරම්භ කළෙමි. ප්රධාන අරමුණ වුයේ, සමාන්ය‑ප්රයෝජන hydrator එකක් සෑදීමත්, ඒකෙන් type conversion, nested objects, transformations, assertions සහ private properties සදහා සහය දීමත්ය. එහිදී, භාවිත නොකළ විශේෂතා සඳහා අමතර පිරිවැය නොවෙයි යන නීතිය අනුගමනය කළෙමි.
ඉදිරිපත් කළ විසඳුම – HydraType – පළමු වරට වස්තුව hydrate කිරීමේ පෙර, ඉලක්ක (target) ශ්රේණියේ (class) ගුණාංග සහ attribute ගණනාවක් විශ්ලේෂණය කර, ඒ අනුව PHP කේතයක් ජනනය කරයි. උදාහරණයක් ලෙස, සරල integer ගුණයක් සඳහා ජනිත ලේඛනය මෙසේ වේ:
$object->id = (int) $data['id'];
මෙම පදනමෙන්, පසුගිය ගුණාංගය සඳහා තවත් විමර්ශනයක් නොකෙරේ.
private ගුණාංග සඳහා reflection භාවිතා කළාට පසු, සෑම setValue() ඇමතුමක්ම වැඩ වේගය අඩු කරන බව පෙනුනේය. එබැවින්, class‑scoped closure එකක් (Closure::bind) භාවිතා කර, එකවර සියලු private ගුණාංග assign කිරීමේ ක්රියාවලිය සකස් කළෙමි. එම closure එක එක වරක් නිර්මාණය කර, බහු වස්තු සඳහා නැවත භාවිතා කිරීමෙන්, 5 private ගුණාංග assign කිරීමේ කාලය 152 ns වෙත පත් විය, එත් cached reflection භාවිතා කිරීමේදී 290 ns වූයේය.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ PHP සංවර්ධකයින්ට මෙම නවතම HydraType පද්ධතිය ඉතා වැදගත් වේ. වැඩි කාර්ය සාධනය නිසා, තරඟකාරී වෙබ් ඇප්පලිකේෂන්, e‑commerce හා API සේවා නිර්මාණය කරමින් පවතින සමාගම්වලට CPU භාවිතය අඩු කර, පරිසර හිතකාමී හා වියදම් අඩු කරන විසඳුමක් ලැබේ.
- ඉගෙනීමේ වාසිය: දත්ත hydration ක්රමවේදය පිළිබඳ ගැඹුරු අවබෝධයක් ලබා ගත හැක.
- ව්යාපාරික වාසිය: වේගවත් සේවා නිසා පාරිභෝගික අත්දැකීම් වඩාත් හොඳයි, එමෙන්ම සර්වර් පරිභෝජනය අඩු වේ.
- සමාජ වාසිය: තාක්ෂණික දක්ෂතා වර්ධනයෙන් ශ්රී ලංකාවේ IT ආර්ථිකය තවත් වර්ධනය වේ.
අවසානයේ, කේතය සරල, මොඩියුලර් හා අතිශය වේගවත් බවට පත්වීම, PHP සංවර්ධකයින්ට අනාගතයේදී වැඩි නිමැවුම්ශීලීත්වයක් ලබා දේ. ඔබේ ව්යවසායකය හෝ පෞද්ගලික ව්යාපෘතියේ hydration කාර්ය සාධනය වැඩි දියුණු කර ගැනීමට HydraType එක අත්හදා බලන්න.