рд╣рдо рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕реБрдИ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ


рд╕реБрдИ рдЦреЛрдЬрдиреЗ рдХреА рдХреМрди рд╕реА рд╡рд┐рдзрд┐ рддреЗрдЬ рд╣реИ? рдПрдХ рддрд┐рдирдХреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ, рдпрд╛ рдЧрд▓рддреА рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рджреЗрдЦреЛ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдкреНрд░рдпреЛрдЧ рд╣реИ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЬреНрдЮрд╛рди, рдПрдХ Arduino рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░, рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рджреЛрд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдХрджрдо "рд╕рдордЭ"


рдореБрдЭреЗ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ? рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдордп рд╡реНрдпрддреАрдд рд╣реБрдЖред рдХреЗрд╡рд▓ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рдпреЛрдЧ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдХрдИ рдмрд╛рд░ рд╡рд┐рдзрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдЬрд┐рд╕ рд╕рдордп рдореЗрдВ рдореЗрд░реА рд░реБрдЪрд┐ рд╣реИ рд╡рд╣ рдФрд╕рдд рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЕрдЧрд▓рд╛ рдЪрд░рдг рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдФрд░ рдХреМрди рд╕реЗ рдЪрд░ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИред рд╕рдордп рдХреА рд░рд╛рд╢рд┐ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:

"Time_poslMetod" рдФрд░ "Time_randMetod"ред

рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

# рдбреЗрдлрд┐рди рдЗрдЯрд░ 1000ред

рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

#define Iter 10000 #define cell 100 uint8_t potenArr[cell]; //  uint8_t needle = 0; //  uint32_t startTime = 0; //    uint32_t endTime = 0; //    uint32_t calculationStartTime = 0; uint32_t calculationEndTime = 0; uint32_t Time_poslMetod = 0; uint32_t Time_randMetod = 0; 

рдЪрд░рдг рджреЛ "рдХреЛрдб рд▓рд┐рдЦреЗрдВ"


рдХреЗ рд▓рд┐рдП рд▓реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрдВрджрд░ рд╣рдо рд╕реБрдИ рдХреЛ рдзрдбрд╝ рдореЗрдВ "рдлреЗрдВрдХ" рдХрд░реЗрдВрдЧреЗ, рдЦреЛрдЬ рдХрд░реЗрдВрдЧреЗ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдорд╛рдкреЗрдВрдЧреЗ, рд╕рдордп рдХреЛ "рд╡реИрд╢реНрд╡рд┐рдХ" (Time_poslMetod / Time_andandMetod) рдЪрд░ (рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП) рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред

  //   Iter  for(uint32_t j = 0; j <= Iter; j++){ //      cleanArr(); //     needle = random(cell + 1); potenArr[needle] = 1; //          poslMetod(); randMetod(); } 

рдпрд╣ рдореЗрд░реЗ рддрд░реАрдХреЛрдВ рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИред

рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╡рд┐рдзрд┐:

 void poslMetod(){ startTime = millis(); for(uint16_t i = 0; i < cell; i++){ if(potenArr[i] == 1){ endTime = millis() - startTime; break; } } Time_poslMetod += endTime; } 

рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рдордп рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЦреЛрдЬ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рд╕реЗ рдЗрд╕реЗ рдШрдЯрд╛рддреЗ рд╣реИрдВред рд╣рдо рдкрд╣рд▓реЗ рддрддреНрд╡ рд╕реЗ рдЕрдВрддрд┐рдо рддрдХ рд╕рд░рдгреА (рд╕реНрдЯреИрдХ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВред рдЬрдм рд╣рдо рд╕реБрдИ рдвреВрдВрдврддреЗ рд╣реИрдВ, рддреЛ рд╕рдордп рд▓рд┐рдЦреЗрдВ, рдЦреЛрдЬ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ, "рд╡реИрд╢реНрд╡рд┐рдХ" (Time_poslMetod) рдЪрд░ рдореЗрдВ рд╕рдордп рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╡рд┐рдзрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред

рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд┐рдзрд┐:

 void randMetod(){ startTime = millis(); for(;;){ uint16_t r = random(cell + 1); if(potenArr[r] == 1){ endTime = millis() - startTime; break; } } Time_randMetod += endTime; } 

рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рд░рдгреА рддрддреНрд╡ (рд╕реНрдЯреИрдХ рдореЗрдВ рдПрдХ рдЬрдЧрд╣) рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рднрд╛рдЧреНрдп рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рд╣рдо рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕реБрдИ рдкрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рдХрд╛рд╕ рд╕реНрдерд┐рддрд┐ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рд╣рдо рд╕реБрдИ рдвреВрдВрдврддреЗ рд╣реИрдВ, рд╕рдордп рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЦреЛрдЬ рдкреВрд░реА рдХрд░рддреЗ рд╣реИрдВ, рд╕рдордп рдХреЛ "рд╡реИрд╢реНрд╡рд┐рдХ" (Time_randMetod) рдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╡рд┐рдзрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдзрд┐ рд╣рдореЗрдВ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддреА рд╣реИ рдХрд┐ рдпрд╣ рддреЗрдЬрд╝ рд╣реИ, рдЗрд╕ рдирд╕ рдореЗрдВ рдпрд╣ рдФрд░ рднреА рдзреАрдорд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рднрд╛рдЧреНрдп рд╣рдорд╛рд░реА рддрд░рдл рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдвреЗрд░ рд╕реНрдерд╛рдиреЛрдВ рдХреА 100 рд╕реЗ рдЕрдзрд┐рдХ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рд╕рдордп рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ 100 рдЬрд╛рдВрдЪреЛрдВ рдХреА рдПрдХ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдордиреЗ рдкреВрд░реЗ рд╕реНрдЯреИрдХ рдХреА рдЬрд╛рдБрдЪ рдХреА рд╣реИ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╕рдордп рдмрд┐рддрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реБрдИ рдХреЛ рдкрд╛рдпрд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рднреА, рдореИрдВ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╣реВрдВ, рддреЛ рдЪрд▓рд┐рдП рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛, рдХреЛрдб рдХреЛ рдЪрдордХрд╛рдирд╛, рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдирд╛:

рд╕рдВрдкреВрд░реНрдг рдХреЛрдб
 #define Iter 10000 #define cell 100 uint8_t potenArr[cell]; //  uint8_t needle = 0; // ,         uint32_t startTime = 0; //    uint32_t endTime = 0; //    uint32_t calculationStartTime = 0; uint32_t calculationEndTime = 0; uint32_t Time_poslMetod = 0; uint32_t Time_randMetod = 0; void poslMetod(); void randMetod(); void cleanArr(); void DataOutPrint(); void setup() { randomSeed(analogRead(A0)); Serial.begin(115200); } void loop() { Time_poslMetod = 0; Time_randMetod = 0; Serial.println(" "); Serial.println("Start"); calculationStartTime = millis(); //   Iter  for(uint32_t j = 0; j <= Iter; j++){ //      cleanArr(); //        needle = random(cell + 1); potenArr[needle] = 1; //           poslMetod(); randMetod(); } //       DataOutPrint(); delay(2000); } void poslMetod(){ startTime = millis(); for(uint16_t i = 0; i < cell; i++){ if(potenArr[i] == 1){ endTime = millis() - startTime; break; } } Time_poslMetod += endTime; } void randMetod(){ startTime = millis(); for(;;){ uint16_t r = random(cell + 1); if(potenArr[r] == 1){ endTime = millis() - startTime; break; } } Time_randMetod += endTime; } void cleanArr(){ for(uint16_t i = 0; i < cell; i++){ potenArr[i] = 0; } } void DataOutPrint(){ calculationEndTime = (millis() - calculationStartTime)/1000; float OUTposl = (float)Time_poslMetod/Iter; float OUTrand = (float)Time_randMetod/Iter; Serial.println(" "); Serial.print("Number of iterations = "); Serial.println(Iter); Serial.print("Time for calculate (sec) = "); Serial.println(calculationEndTime); Serial.print("Posledovatelniy metod - AverageTime (ms) = "); Serial.println(OUTposl,3); Serial.print("Randomniy metod - AverageTime (ms) = "); Serial.println(OUTrand,3); } 


рдЪрд░рдг рддреАрди "рдкрд░рд┐рдгрд╛рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг"


рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:



рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рд╣реИрд░рд╛рди рд╣реВрдВред рд╢рд░реНрдд рд▓рдЧрд╛рддреЗ рд╣реБрдП рдХрд┐ рд╕рдордп рдХрд░реАрдм рд╣реЛрдЧрд╛, рдореИрдВ рд╣рд╛рд░ рдЬрд╛рдКрдВрдЧрд╛ред

рдмрд╕, рдЬреЛ рд╣реБрдЖ рдЙрд╕рд╕реЗ рдбрд░ рдЧрдпрд╛, рдХрд┐рд╕реНрдордд рдореБрдЭрд╕реЗ (рд╣рдорд╕реЗ) рджреВрд░ рд╣реЛ рдЧрдИред рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрдЧрд░ рд╣рдо рд╕реНрдЯреИрдХ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрдЧрд▓реЗ рд╕реЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЪреАрдЬреЗрдВ рдХреИрд╕реА рд╣реЛрддреА рд╣реИрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪреЗрдХ рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░рддреЗред рдЗрд╕ рдмреАрдЪ, рд╣рдо рдпрд╣ рдзреНрдпрд╛рди рд░рдЦреЗрдВрдЧреЗ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ, рдЧрдгрд┐рдд рдФрд░ рд╕рдЯреАрдХ рд╡рд┐рдЬреНрдЮрд╛рдиреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЙрдмрд╛рдК рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕рдордп рдХрдо рдХрд░рдиреЗ, рдХреБрдЫ рдореМрдЬ-рдорд╕реНрддреА рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред

Source: https://habr.com/ru/post/hi439336/


All Articles