рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рджреЗрдЦрд╛ рдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдПрдкреАрдЖрдИ рд╕рдорд╛рди рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдПрдкреАрдЖрдИ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпрд╣ рднреА рдкрддрд╛ рдерд╛ рдХрд┐ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЖрдЦрд┐рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рдо рдПрдХ рдЕрдбрд╝рдЪрди рдмрди рдЧрдпрд╛, рдФрд░ рдореИрдВрдиреЗ рдорд╛рдк рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрд╛ред
рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ async рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдиреНрдпреВрдирддрдо API рд╕реНрддрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд▓рдЧрднрдЧ рд╣рд░ рдЬрдЧрд╣ async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рднрд▓реЗ рд╣реА рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рди рд╣реЛред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕реЗрд╡рд╛ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрддрд╛ рд╣реИред рднрдВрдбрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдПрдХ рдлрд╝рд╛рдЗрд▓, рдбреЗрдЯрд╛рдмреЗрд╕, рдорд╛рдЗрдХреНрд░реЛрд╕реИрд╕ рд╕рд░реНрд╡рд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдзреАрдорд╛ рд╕реНрд░реЛрдд рд╣реИред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рдЕрдВрджрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреИрд╢ рдХрд░рддреЗ рд╣реИрдВ (рдЙрдиреНрд╣реЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ)ред рдЬреИрд╕реЗ рд╣реА рд╕реНрдЯреЛрд░ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рд╡рд╕реНрддреБрдУрдВ рдХреЛ рддреЗрдЬреА рд╕реЗ рдХреИрд╢ рд╕реЗ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░рд╣рддрд╛ рд╣реИ!
рдкреНрд░рддреНрдпреЗрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХреНрдпрд╛ рдХреАрдордд рдЪреБрдХрд╛рдиреА рд╣реЛрдЧреА?
рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ ...
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рдВрдХреНрд╢рди рд▓реЗрдВ, рдЗрд╕реЗ async рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ, рдФрд░ рд╣рдо рдЗрд╕реЗ рд▓реВрдк рдореЗрдВ рдХрд╣реЗрдВрдЧреЗ, рдХреБрд▓ рд╕рдордп рдХреЛ рдорд╛рдкреЗрдВрдЧреЗ, рдФрд░ рдПрдХ рд╕рдорд╛рди рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВрдЧреЗред рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ 3 рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреВрд░реНрдг рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ ( Deno )
рд╕рдордХрд╛рд▓рд┐рдХ рдХреЛрдбconst b = Date.now() let j = 0.0 for (let i = 0; i < 1_000_000_000; i++) { j += f(i) } console.log(j + ', ' + (Date.now() - b)/1000 + 's') function f(i: number): number { return i / 3.1415926 }
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб:
(async () => { const b = Date.now() let j = 0.0 for (let i = 0; i < 1_000_000_000; i++) { j += await f(i) } console.log(j + ', ' + (Date.now() - b)/1000 + 's') })() async function f(i: number): Promise<number> { return i / 3.1415926 }
C # (.NET рдХреЛрд░)
рд╕рдордХрд╛рд▓рд┐рдХ рдХреЛрдб using System; class App { static void Main(string[] args) { var b = DateTime.Now; var j = 0.0; for (var i = 0L; i < 1_000_000_000L; i++) { j += f(i); } Console.WriteLine(j + ", " + (DateTime.Now - b).TotalMilliseconds / 1000 + "s"); } static double f(long i) { return i / 3.1415926; } }
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб:
using System; using System.Threading.Tasks; class App { static async Task Main(string[] args) { var b = DateTime.Now; var j = 0.0; for (var i = 0L; i < 1_000_000_000L; i++) { j += await f(i); } Console.WriteLine(j + ", " + (DateTime.Now - b).TotalMilliseconds / 1000 + "s"); } static async Task<double> f(long i) { return i / 3.1415926; } }
рд░рддреБрдЖ
рд╕рдордХрд╛рд▓рд┐рдХ рдХреЛрдб fn main() { let tbegin = std::time::SystemTime::now(); let mut j = 0.0; for i in 0..1_000_000_000i64 { j += f(i); } println!("{:?}, {:?}", j, tbegin.elapsed().unwrap()); } fn f(i: i64) -> f64 { return i as f64 / 3.1415926 }
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб:
рдкрд░рд┐рдгрд╛рдо
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА 3 рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрдВрдХрдЧрдгрд┐рдд рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд╣реЗрдб рдкрд░рд┐рдорд╛рдг рдХреЗ рдПрдХ рдХреНрд░рдо рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬрд╣рд╛рдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ / рд╡реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдмрд╕реЗ рдЖрдо (рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреНрд░рдЪрд╛рд░рд┐рдд) рд╣реИ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХреА рд▓рд╛рдЧрдд рдХреЗрд╡рд▓ рдирд┐рд╖реЗрдзрд╛рддреНрдордХ рд╣реИред рд░рд╕реНрдЯ рдиреЗ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд░реЗрд╕ рдЬреАрддреА, рд╢рд╛рдпрдж рдпрд╣реА рдореБрдЦреНрдп рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рд▓рд┐рдЦреЗ рдЧрдП WEB- рдлреНрд░реЗрдорд╡рд░реНрдХ рдиреЗ рд▓рдЧрд╛рддрд╛рд░ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЬреАрддрд╛ рд╣реИред
рд╕рд╛рд░рд╛рдВрд╢
рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ, рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реАрдзреЗ рднрд╛рд╖рд╛ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд▓реНрджреА рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдПрд╕рд┐рдВрдХреНрд╕ / рд╡реЗрдЯ рдПрдХ рдорд╣рд╛рди рдЕрдореВрд░реНрддрддрд╛ рд╣реИ, рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдУрд╡рд░рд╣реЗрдб рдХреЗ рдкреИрдорд╛рдиреЗ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреБрдирд╢реНрдЪ
рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХреЛрдбрд┐рдВрдЧ рдХрд╛рд░реНрдп / рд╡рд╛рджреЛрдВ (рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп) рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХреЛрдб рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдХ рдорд╣рд╛рди рдЙрдкрдХрд░рдг рдХреЗ C # рдореЗрдВ рдЙрдкрд╕реНрдерд┐рддрд┐ рдЬреЛ рд╕рд┐рд░реНрдл рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред