C++ භාෂාවේ move semantics යනු වස්තු (object) ගත කිරීමේ වේගය වැඩි කිරීමට නවීන විධියකි, නමුත් එය සෑම වෙලාවකම පිරිවැයක් රහිත නොවේ. විශේෂයෙන් vector::push_back වැනි ක්රියාවලියක් භාවිතා කරන විට, සෑම වස්තුවක්ම පළමුව prvalue වශයෙන් නිර්මාණය වෙයි, පසුව move constructor එකක් හරහා අන්තර්ගතය මාරු කරයි, ඉන්පසු අතිරේක destructor එකක් කැඳවනු ලබයි.
මෙම පිරිවැය ඇසැම්බිලි මට්ටමින් පරීක්ෂා කළහොත්, සාමාන්ය move constructor එකට පමණක් චාරිකා 4 ඇසැම්බිලි උපදෙස් (mov) අවශ්ය වේ. එහෙත්, vector එකකට v.push_back(S(1)) වැනි කේතයක් ලියන විට, පළමුව S(int) කන්ස්ට්රක්ටරය, පසුව S(S&&) move constructor, ඉන්පසු ~S() destructor (prvalue සඳහා) සහ vector නාශකය සඳහා තවත් destructor එකක් ක්රියාත්මක වේ. මෙය “overhead” ලෙස හඳුන්වයි.
මෙම අතිරේක පියවරවලින් මිදීමට, ලේඛකයා custom memory allocator එකක් භාවිතා කිරීමේ නව ක්රමයක් ඉදිරිපත් කරයි. custom_new<S>(1) ලෙස වස්තුවක් සෘජුවම heap එකේ, වත්මන් ස්කෝප් එකෙන් තොරව, අලූත් මතක ප්රදේශයක නිර්මාණය කරයි. එවිට vector එකට S* (pointer) එකක් පමණක් ඇතුළත් කරයි, ඒ නිසා move constructor හෝ අතිරේක destructor එකක් අවශ්ය නොවේ. ප්රතිඵලයක් ලෙස, vector එකේ එක් ඇතුළත් කිරීමකට එක් mov උපදෙස් පමණක් අවශ්ය වේ, සහ පිරිවැය ගණනාවෙන් අඩු වේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
- ශිෂ්යයන් – C++ කේතයේ මූලික මතක කළමනාකරණය අධ්යයනය කිරීමෙන්, අලංකාර හා කාර්යක්ෂම ක්රමයන් ගැන හොඳ අවබෝධයක් ලැබේ.
- ඩෙවලපර්ලා – වැඩි දක්ෂතා සහිත මතක කළමනාකරණය නිසා, real‑time යෙදුම්, embedded systems, හා high‑performance computing වැනි ක්ෂේත්රයන්හි ප්රතිදානය වැඩි වේ.
- ව්යාපාරිකයන් – මෘදුකාංගයේ පිරිවැය අඩු කිරීමෙන්, server resource අවශ්යතා කුඩා වෙයි, එමනිසා cloud පරිසරයේ වියදම් අඩු කර ගැනීමට හැකියාව ලැබේ.
ඇත්තෙන්ම, මෙම ක්රමය භාවිතා කිරීමේදී දැන ගැනීමට අවශ්යය තවත් කරුණක් ඇත – මතකය අතුරුදන් වූ පසු, ~S() destructor එකක් ඔබම කැඳවන්නට සිදු වේ. එම නිසා, කේතයේ defer block හෝ සමාන පද්ධති භාවිතා කරමින්, මතක නඩත්තු කිරීමේ වගකීම පරිශීලකයාට පැවරෙයි.
සාරාංශය ලෙස, C++ හි move semantics පරිභෝගයෙන් ඇති පිරිවැය අවම කර ගැනීමට, custom allocator එකක් භාවිතා කර vector තුළ pointer පමණක් ගබඩා කිරීමේ විධිය අතිශය ප්රයෝජනවත් වේ. මෙය ශ්රී ලංකාවේ තාක්ෂණික උපාය මාර්ගයක් ලෙස, දේශීය ඩෙවලපර් හා ව්යාපාරිකයන්ට නව අවස්ථා සලසයි.