PHP array help

Jecob Boman

Well-known member
  • Dec 10, 2013
    1,333
    93
    48
    homagama
    array එකක් තියෙනව ඒකෙ array elements ලක්ෂයක් විතර හෝ ඊටත් වඩා තියෙනව කියල හිතන්න. මට ඕන වෙනව ඒ ඇරේ එක පීරල ඒකෙ තියෙන element එකක් හොයාගන්න. මේ වැඩේදි ඉතින් එකක් නෑර බලන්න වෙනවනේ. පොඩි ඇරේ එකක්නම් අවුලක් නෑ.

    මට දැනගන්න ඕන. database වල වගේ indexing වලින් මේ සර්ච් කිරිල්ල ෆාස්ට් කරගන්න පුලුවන්ද කියල. ඒ කිව්වේ හිතන්න 254 කියන array element එක හොයන්න තියෙනව කියල. එතකොට ඒ අගය 254 නිසා 250න් වගේ සර්ච් කරන්න පටන්ගන්න පුලවන් 1 ඉදන්ම සර්ච් නොකර.

    මට මේ වැඩේට database use කරන්න බෑ.
     

    Jecob Boman

    Well-known member
  • Dec 10, 2013
    1,333
    93
    48
    homagama
    හෙළයෙක්;25123207 said:
    ow sorting karan oni

    මගේ තියෙන්නේ අසෝසියේටිව් අරේ එකක්. ඒකේ කීස් නියුමෙරික්. මම ඒව පිලිවෙලට සෝට් කරොත් සහ මම ඒ කීස් අතර මට වහශ්‍ය කී එකක් සර්ච් කරොත්, සෝර්ට් නොකර තියෙනවට වඩා ෆාස්ට්ද සර්ච් කිරිල්ල?

    මේක මචං php.

    lambda
    .find

    thanks මචං හොයල බලන්නම්.
     

    NEMISIS

    Well-known member
  • Nov 13, 2013
    11,348
    19,442
    113
    Colombo
    සෝට් කරන්න පුලුවන් නම් සෝට් කරලා බයිනරි සර්ච් එකක් කරන්න පුලුවන්,

    එහෙම නැත්නම් පැරරලි සර්ච් කරන්න ඕන, එතකොට ප්‍රැක්ටිකල් එක්සිකියුශන් ටයිම් එක අඩු වෙනවා
    මොකක් හරි පැරරල් කම්පියුටින් ලයිබ්‍රියක් යුස් කරන්න පුලුවන් එහෙම නැත්නම් ඇරේ එක කෑලි වලට කඩලා (ඒ කියන්නෙ index 1-9999, 10000-19999... etc) වගේ පැරරලි සර්ච් කරනවා, සෝට් කරලා කරනවට වඩා සෑහෙන ප්‍රැක්ටිල් පර්ෆෝමන්ස් තියේවි මෙහෙම කරොත්


    මගේ තියෙන්නේ අසෝසියේටිව් අරේ එකක්. ඒකේ කීස් නියුමෙරික්. මම ඒව පිලිවෙලට සෝට් කරොත් සහ මම ඒ කීස් අතර මට වහශ්‍ය කී එකක් සර්ච් කරොත්, සෝර්ට් නොකර තියෙනවට වඩා ෆාස්ට්ද සර්ච් කිරිල්ල?

    මේක මචං php.


    edit
    මේක දැක්කෙ පස්සෙ
    ඇසෝසියේටිව් ඇරේ එකක් කියන්නෙ හෑශ් මැප් එකක් කියන එකනේ, ඕක ටයිම් කම්ප්ලෙක්සිටි එක හෑශ් ෆන්ශන් එක අනුව වෙනස් වෙනවා
    අනික ඇසෝසියේටිව් ඇරේ එකක කීස් සෝට් කරා කියල තේරුමක් නැහැ මොකද කොහොමත් හෑශ් ෆන්ශන් එකක් යූස් කරලා තමයි ඉන්ඩෙක්ස් හදන්නෙ
    ඇසෝසියේටිව් ඇරේ එකක array.get(key) එකේ ටයිම් කම්ප්ලෙක්සිටි එක O(1) ඇරේ සර්ච් එකක ටයිම් කම්ප්ලෙක්සිටි එක O(n) ඒ කියන්නෙ ඇසෝසියේටිව් ඇරේ එකක් නම් කොහමත් ඇරේ එකට වඩා ෆාස්ට් කියන එක
    එහෙම කරනවා නම් අර විදියට පැරරලි කරනවටත් වඩා ෆාස්ට් වෙයි මම හිතන්නෙ

    edited again
    හෑශ් මැප් එකක කී එක තියනවද කියලා හොයන එක පට්ට ස්ලෝ, ඒකත් O(n), කෙලින්ම get(key) යූස් කරලා වැලියු එක null හෝ වෙනයම් විදියකට වැලිඩේට් කරන්න වෙනවා පර්ෆෝමන්ස් තියාගන්න
     
    Last edited:

    Jecob Boman

    Well-known member
  • Dec 10, 2013
    1,333
    93
    48
    homagama
    සෝට් කරන්න පුලුවන් නම් සෝට් කරලා බයිනරි සර්ච් එකක් කරන්න පුලුවන්,

    එහෙම නැත්නම් පැරරලි සර්ච් කරන්න ඕන, එතකොට ප්‍රැක්ටිකල් එක්සිකියුශන් ටයිම් එක අඩු වෙනවා
    මොකක් හරි පැරරල් කම්පියුටින් ලයිබ්‍රියක් යුස් කරන්න පුලුවන් එහෙම නැත්නම් ඇරේ එක කෑලි වලට කඩලා (ඒ කියන්නෙ index 1-9999, 10000-19999... etc) වගේ පැරරලි සර්ච් කරනවා, සෝට් කරලා කරනවට වඩා සෑහෙන ප්‍රැක්ටිල් පර්ෆෝමන්ස් තියේවි මෙහෙම කරොත්

    මේවගේ කඩල කරනවනම් හොදයි වගේ තමයි. :yes: තෑන්ක්ස් මචං.
     

    Jecob Boman

    Well-known member
  • Dec 10, 2013
    1,333
    93
    48
    homagama
    සෝට් කරන්න පුලුවන් නම් සෝට් කරලා බයිනරි සර්ච් එකක් කරන්න පුලුවන්,

    එහෙම නැත්නම් පැරරලි සර්ච් කරන්න ඕන, එතකොට ප්‍රැක්ටිකල් එක්සිකියුශන් ටයිම් එක අඩු වෙනවා
    මොකක් හරි පැරරල් කම්පියුටින් ලයිබ්‍රියක් යුස් කරන්න පුලුවන් එහෙම නැත්නම් ඇරේ එක කෑලි වලට කඩලා (ඒ කියන්නෙ index 1-9999, 10000-19999... etc) වගේ පැරරලි සර්ච් කරනවා, සෝට් කරලා කරනවට වඩා සෑහෙන ප්‍රැක්ටිල් පර්ෆෝමන්ස් තියේවි මෙහෙම කරොත්




    මේක දැක්කෙ පස්සෙ
    ඇසෝසියේටිව් ඇරේ එකක් කියන්නෙ හෑශ් මැප් එකක් කියන එකනේ, ඕක ටයිම් කම්ප්ලෙක්සිටි එක හෑශ් ෆන්ශන් එක අනුව වෙනස් වෙනවා
    අනික ඇසෝසියේටිව් ඇරේ එකක කීස් සෝට් කරා කියල තේරුමක් නැහැ මොකද කොහොමත් හෑශ් ෆන්ශන් එකක් යූස් කරලා තමයි ඉන්ඩෙක්ස් හදන්නෙ
    ඇසෝසියේටිව් ඇරේ එකක array.get(key) එකේ ටයිම් කම්ප්ලෙක්සිටි එක O(1) ඇරේ සර්ච් එකක ටයිම් කම්ප්ලෙක්සිටි එක O(n) ඒ කියන්නෙ ඇසෝසියේටිව් ඇරේ එකක් නම් කොහමත් ඇරේ එකට වඩා ෆාස්ට් කියන එක
    එහෙම කරනවා නම් අර විදියට පැරරලි කරනවටත් වඩා ෆාස්ට් වෙයි මම හිතන්නෙ

    එහෙනම් නෝමල් විදියට කරනව. ඕනවට වඩා දැන්මම ඔප්ටිමයිස් කරන්න ගිහින් ඕවර් කම්ප්ලිකේටඩ් කරගන්න ඕන නෑ කෝඩ් එක. ඒත් ඇරේ එක ලොකු වෙද්දි තමයි බය.

    තෑන්ක්ස් යාලු. :yes:
     

    CustomerSupport

    Well-known member
  • Mar 21, 2016
    2,404
    1,515
    113
    100K elements array ekakata gannawa kiyanne fundamental issue ekak thiyenawa architecture eke.

    Associative array ekak Nam hash lookup ekak karanna puluwan. Eka O(1) operation ekak. Naththem array eka issaralama index karanna puluwan binary tree ekakata. Database values Nam database eken eken ma index ekak Danna eka lesi.