தமிழ்

ஜாவாஸ்கிரிப்டில் ஃபார் லூப்கள், ஃபார்ஈச், மற்றும் மேப் முறைகளின் விரிவான செயல்திறன் ஒப்பீடு, டெவலப்பர்களுக்கான நடைமுறை எடுத்துக்காட்டுகள் மற்றும் சிறந்த பயன்பாட்டு நிகழ்வுகளுடன்.

செயல்திறன் ஒப்பீடு: ஜாவாஸ்கிரிப்டில் ஃபார் லூப் vs. ஃபார்ஈச் vs. மேப்

ஜாவாஸ்கிரிப்ட் வரிசைகளில் (arrays) இடரேட் செய்வதற்கு பல வழிகளை வழங்குகிறது, ஒவ்வொன்றும் அதன் சொந்த தொடரியல், செயல்பாடு, மற்றும் மிக முக்கியமாக, செயல்திறன் பண்புகளைக் கொண்டுள்ளது. for லூப்கள், forEach, மற்றும் map ஆகியவற்றுக்கு இடையேயான வேறுபாடுகளைப் புரிந்துகொள்வது, திறமையான மற்றும் மேம்படுத்தப்பட்ட ஜாவாஸ்கிரிப்ட் குறியீட்டை எழுதுவதற்கு முக்கியமானது, குறிப்பாக பெரிய தரவுத்தொகுப்புகள் அல்லது செயல்திறன்-முக்கியமான பயன்பாடுகளைக் கையாளும் போது. இந்த கட்டுரை ஒரு விரிவான செயல்திறன் ஒப்பீட்டை வழங்குகிறது, ஒவ்வொரு முறையின் நுணுக்கங்களையும் ஆராய்ந்து, எப்போது எதைப் பயன்படுத்த வேண்டும் என்பதற்கான வழிகாட்டுதலை வழங்குகிறது.

அறிமுகம்: ஜாவாஸ்கிரிப்டில் இடரேட் செய்தல்

வரிசைகளில் இடரேட் செய்வது நிரலாக்கத்தில் ஒரு அடிப்படைப் பணியாகும். ஜாவாஸ்கிரிப்ட் இதை அடைய பல்வேறு முறைகளை வழங்குகிறது, ஒவ்வொன்றும் குறிப்பிட்ட நோக்கங்களுக்காக வடிவமைக்கப்பட்டுள்ளன. நாம் மூன்று பொதுவான முறைகளில் கவனம் செலுத்துவோம்:

சரியான இடரேஷன் முறையைத் தேர்ந்தெடுப்பது உங்கள் குறியீட்டின் செயல்திறனை கணிசமாக பாதிக்கலாம். ஒவ்வொரு முறையையும் ஆழமாக ஆராய்ந்து அவற்றின் செயல்திறன் பண்புகளைப் பகுப்பாய்வு செய்வோம்.

for லூப்: பாரம்பரிய அணுகுமுறை

for லூப் என்பது ஜாவாஸ்கிரிப்ட் மற்றும் பல நிரலாக்க மொழிகளில் மிகவும் அடிப்படையான மற்றும் பரவலாகப் புரிந்து கொள்ளப்பட்ட இடரேஷன் கட்டமைப்பாகும். இது இடரேஷன் செயல்முறையின் மீது வெளிப்படையான கட்டுப்பாட்டை வழங்குகிறது.

தொடரியல் மற்றும் பயன்பாடு

ஒரு for லூப்பின் தொடரியல் நேரடியானது:


for (let i = 0; i < array.length; i++) {
  // ஒவ்வொரு உறுப்பிற்கும் செயல்படுத்தப்பட வேண்டிய குறியீடு
  console.log(array[i]);
}

இங்கே அதன் கூறுகளின் முறிவு:

செயல்திறன் பண்புகள்

for லூப் பொதுவாக ஜாவாஸ்கிரிப்டில் வேகமான இடரேஷன் முறையாகக் கருதப்படுகிறது. இது மிகக் குறைந்த மேல்நிலைச் செலவை (overhead) வழங்குகிறது, ஏனெனில் இது நேரடியாக கவுண்டரைக் கையாளுகிறது மற்றும் வரிசை உறுப்புகளை அவற்றின் குறியீட்டைப் பயன்படுத்தி அணுகுகிறது.

முக்கிய நன்மைகள்:

எடுத்துக்காட்டு: உலகெங்கிலும் இருந்து ஆர்டர்களைச் செயல்படுத்துதல்

வெவ்வேறு நாடுகளில் இருந்து வரும் ஆர்டர்களின் பட்டியலை நீங்கள் செயல்படுத்துகிறீர்கள் என்று கற்பனை செய்து பாருங்கள். வரி நோக்கங்களுக்காக சில நாடுகளில் இருந்து வரும் ஆர்டர்களை நீங்கள் வித்தியாசமாகக் கையாள வேண்டியிருக்கலாம்.


const orders = [
  { id: 1, country: 'USA', amount: 100 },
  { id: 2, country: 'Canada', amount: 50 },
  { id: 3, country: 'UK', amount: 75 },
  { id: 4, country: 'Germany', amount: 120 },
  { id: 5, country: 'USA', amount: 80 }
];

function processOrders(orders) {
  for (let i = 0; i < orders.length; i++) {
    const order = orders[i];
    if (order.country === 'USA') {
      console.log(`அமெரிக்க ஆர்டர் ${order.id} ஐ ${order.amount} தொகையுடன் செயல்படுத்துகிறது`);
      // அமெரிக்காவிற்கான குறிப்பிட்ட வரி தர்க்கத்தைப் பயன்படுத்தவும்
    } else {
      console.log(`ஆர்டர் ${order.id} ஐ ${order.amount} தொகையுடன் செயல்படுத்துகிறது`);
    }
  }
}

processOrders(orders);

forEach: இடரேஷனுக்கான ஒரு செயல்பாட்டு அணுகுமுறை

forEach என்பது வரிசைகளில் கிடைக்கும் ஒரு உயர்-வரிசை செயல்பாடாகும், இது இடரேட் செய்வதற்கு மிகவும் சுருக்கமான மற்றும் செயல்பாட்டு வழியை வழங்குகிறது. இது ஒவ்வொரு வரிசை உறுப்பிற்கும் ஒரு முறை வழங்கப்பட்ட செயல்பாட்டைச் செயல்படுத்துகிறது.

தொடரியல் மற்றும் பயன்பாடு

forEach இன் தொடரியல் பின்வருமாறு:


array.forEach(function(element, index, array) {
  // ஒவ்வொரு உறுப்பிற்கும் செயல்படுத்தப்பட வேண்டிய குறியீடு
  console.log(element, index, array);
});

கால்பேக் செயல்பாடு மூன்று வாதங்களைப் பெறுகிறது:

செயல்திறன் பண்புகள்

forEach பொதுவாக ஒரு for லூப்பை விட மெதுவாக இருக்கும். இதற்குக் காரணம், forEach ஒவ்வொரு உறுப்பிற்கும் ஒரு செயல்பாட்டை அழைப்பதற்கான மேல்நிலைச் செலவைக் கொண்டுள்ளது, இது செயல்படுத்தும் நேரத்தை அதிகரிக்கிறது. இருப்பினும், சிறிய வரிசைகளுக்கு இந்த வேறுபாடு மிகக் குறைவாக இருக்கலாம்.

முக்கிய நன்மைகள்:

முக்கிய தீமைகள்:

எடுத்துக்காட்டு: வெவ்வேறு பிராந்தியங்களிலிருந்து தேதிகளை வடிவமைத்தல்

உங்களிடம் ஒரு நிலையான வடிவத்தில் தேதிகளின் வரிசை இருப்பதாகவும், அவற்றை வெவ்வேறு பிராந்திய விருப்பங்களுக்கு ஏற்ப வடிவமைக்க வேண்டும் என்றும் கற்பனை செய்து பாருங்கள்.


const dates = [
  '2024-01-15',
  '2023-12-24',
  '2024-02-01'
];

function formatDate(dateString, locale) {
  const date = new Date(dateString);
  return date.toLocaleDateString(locale);
}

function formatDates(dates, locale) {
  dates.forEach(dateString => {
    const formattedDate = formatDate(dateString, locale);
    console.log(`வடிவமைக்கப்பட்ட தேதி (${locale}): ${formattedDate}`);
  });
}

formatDates(dates, 'en-US'); // அமெரிக்க வடிவம்
formatDates(dates, 'en-GB'); // இங்கிலாந்து வடிவம்
formatDates(dates, 'de-DE'); // ஜெர்மன் வடிவம்

map: வரிசைகளை மாற்றுதல்

map என்பது வரிசைகளை மாற்றுவதற்காக வடிவமைக்கப்பட்ட மற்றொரு உயர்-வரிசை செயல்பாடாகும். இது அசல் வரிசையின் ஒவ்வொரு உறுப்பிற்கும் வழங்கப்பட்ட ஒரு செயல்பாட்டைப் பயன்படுத்துவதன் மூலம் ஒரு புதிய வரிசையை உருவாக்குகிறது.

தொடரியல் மற்றும் பயன்பாடு

map இன் தொடரியல் forEach ஐப் போன்றது:


const newArray = array.map(function(element, index, array) {
  // ஒவ்வொரு உறுப்பையும் மாற்றுவதற்கான குறியீடு
  return transformedElement;
});

கால்பேக் செயல்பாடு forEach (element, index, மற்றும் array) போன்ற அதே மூன்று வாதங்களைப் பெறுகிறது, ஆனால் அது ஒரு மதிப்பை திருப்பித் தர வேண்டும், இது புதிய வரிசையில் தொடர்புடைய உறுப்பாக இருக்கும்.

செயல்திறன் பண்புகள்

forEach ஐப் போலவே, map பொதுவாக ஒரு for லூப்பை விட மெதுவாக இருக்கும், இது செயல்பாட்டு அழைப்பு மேல்நிலைச் செலவு காரணமாகும். கூடுதலாக, map ஒரு புதிய வரிசையை உருவாக்குகிறது, இது அதிக நினைவகத்தை நுகரக்கூடும். இருப்பினும், ஒரு வரிசையை மாற்ற வேண்டிய செயல்பாடுகளுக்கு, ஒரு for லூப் மூலம் கைமுறையாக ஒரு புதிய வரிசையை உருவாக்குவதை விட map மிகவும் திறமையானதாக இருக்கும்.

முக்கிய நன்மைகள்:

முக்கிய தீமைகள்:

எடுத்துக்காட்டு: வெவ்வேறு நாடுகளின் நாணயங்களை USD ஆக மாற்றுதல்

உங்களிடம் வெவ்வேறு நாணயங்களில் பரிவர்த்தனைகளின் வரிசை இருப்பதாகவும், அறிக்கையிடல் நோக்கங்களுக்காக அவற்றை எல்லாம் USD ஆக மாற்ற வேண்டும் என்றும் வைத்துக்கொள்வோம்.


const transactions = [
  { id: 1, currency: 'EUR', amount: 100 },
  { id: 2, currency: 'GBP', amount: 50 },
  { id: 3, currency: 'JPY', amount: 7500 },
  { id: 4, currency: 'CAD', amount: 120 }
];

const exchangeRates = {
  'EUR': 1.10, // எடுத்துக்காட்டு மாற்று விகிதம்
  'GBP': 1.25,
  'JPY': 0.007,
  'CAD': 0.75
};

function convertToUSD(transaction) {
  const rate = exchangeRates[transaction.currency];
  if (rate) {
    return transaction.amount * rate;
  } else {
    return null; // மாற்று தோல்வியைக் குறிக்கிறது
  }
}

const usdAmounts = transactions.map(transaction => convertToUSD(transaction));

console.log(usdAmounts);

செயல்திறன் பெஞ்ச்மார்க்கிங்

இந்த முறைகளின் செயல்திறனை புறநிலையாக ஒப்பிட, ஜாவாஸ்கிரிப்டில் console.time() மற்றும் console.timeEnd() போன்ற பெஞ்ச்மார்க்கிங் கருவிகளை அல்லது பிரத்யேக பெஞ்ச்மார்க்கிங் நூலகங்களைப் பயன்படுத்தலாம். இங்கே ஒரு அடிப்படை எடுத்துக்காட்டு:


const arraySize = 100000;
const largeArray = Array.from({ length: arraySize }, (_, i) => i + 1);

// For loop
console.time('For loop');
for (let i = 0; i < largeArray.length; i++) {
  // ஏதாவது செய்
  largeArray[i] * 2;
}
console.timeEnd('For loop');

// forEach
console.time('forEach');
largeArray.forEach(element => {
  // ஏதாவது செய்
  element * 2;
});
console.timeEnd('forEach');

// Map
console.time('Map');
largeArray.map(element => {
  // ஏதாவது செய்
  return element * 2;
});
console.timeEnd('Map');

எதிர்பார்க்கப்படும் முடிவுகள்:

பெரும்பாலான சந்தர்ப்பங்களில், பின்வரும் செயல்திறன் வரிசையை (வேகமானதில் இருந்து மெதுவானது வரை) நீங்கள் கவனிப்பீர்கள்:

  1. for லூப்
  2. forEach
  3. map

முக்கியமான பரிசீலனைகள்:

சிறந்த நடைமுறைகள் மற்றும் பயன்பாட்டு வழக்குகள்

சரியான இடரேஷன் முறையைத் தேர்ந்தெடுப்பது உங்கள் பணியின் குறிப்பிட்ட தேவைகளைப் பொறுத்தது. இங்கே சிறந்த நடைமுறைகளின் சுருக்கம்:

நிஜ-உலக காட்சிகள் மற்றும் எடுத்துக்காட்டுகள்

ஒவ்வொரு இடரேஷன் முறையும் மிகவும் பொருத்தமான தேர்வாக இருக்கக்கூடிய சில நிஜ-உலக காட்சிகள் இங்கே:

அடிப்படைகளுக்கு அப்பால்: பிற இடரேஷன் முறைகள்

இந்தக் கட்டுரை for லூப்கள், forEach, மற்றும் map ஆகியவற்றில் கவனம் செலுத்தினாலும், ஜாவாஸ்கிரிப்ட் குறிப்பிட்ட சூழ்நிலைகளில் பயனுள்ளதாக இருக்கும் பிற இடரேஷன் முறைகளையும் வழங்குகிறது:

முடிவுரை

ஜாவாஸ்கிரிப்டில் வெவ்வேறு இடரேஷன் முறைகளின் செயல்திறன் பண்புகள் மற்றும் பயன்பாட்டு நிகழ்வுகளைப் புரிந்துகொள்வது திறமையான மற்றும் மேம்படுத்தப்பட்ட குறியீட்டை எழுதுவதற்கு அவசியமானது. for லூப்கள் பொதுவாக சிறந்த செயல்திறனை வழங்கினாலும், forEach மற்றும் map ஆகியவை பல சூழ்நிலைகளுக்கு ஏற்ற மிகவும் சுருக்கமான மற்றும் செயல்பாட்டு மாற்றுகளை வழங்குகின்றன. உங்கள் பணியின் குறிப்பிட்ட தேவைகளை கவனமாகக் கருத்தில் கொள்வதன் மூலம், நீங்கள் மிகவும் பொருத்தமான இடரேஷன் முறையைத் தேர்வுசெய்து, உங்கள் ஜாவாஸ்கிரிப்ட் குறியீட்டை செயல்திறன் மற்றும் வாசிப்புத்திறனுக்காக மேம்படுத்தலாம்.

செயல்திறன் அனுமானங்களைச் சரிபார்க்க உங்கள் குறியீட்டை பெஞ்ச்மார்க் செய்யவும், உங்கள் பயன்பாட்டின் குறிப்பிட்ட சூழலின் அடிப்படையில் உங்கள் அணுகுமுறையை மாற்றியமைக்கவும் நினைவில் கொள்ளுங்கள். சிறந்த தேர்வு உங்கள் தரவுத்தொகுப்பின் அளவு, செய்யப்படும் செயல்பாடுகளின் சிக்கலான தன்மை மற்றும் உங்கள் குறியீட்டின் ஒட்டுமொத்த இலக்குகளைப் பொறுத்தது.

செயல்திறன் ஒப்பீடு: ஜாவாஸ்கிரிப்டில் ஃபார் லூப் vs. ஃபார்ஈச் vs. மேப் | MLOG