Un code lent n'est pas du tout un problÚme si vous savez comment l'accélérer. Le principal est beau



J'ai entendu Ă  plusieurs reprises comment les programmeurs se moquaient des coĂ©quipiers qui Ă©crivaient du code lent. Des phrases dures et justes dans le style de «cet idiot a parcouru la collection quatre fois, bien qu'il aurait pu en ĂȘtre une», etc. Quand vous entendez cela, vous pensez immĂ©diatement - eh bien, tout est pour affaires, pourquoi faire des itĂ©rations inutiles? Pourquoi ne pouvez-vous pas apprendre quelques choses de base, comme le fonctionnement des expressions LINQ en C # et Ă©crire du code normal? Vous riez des gens stupides incompĂ©tents jusqu'Ă  ce qu'ils se moquent de vous. Et croyez-moi, aucune connaissance en programmation ne vous Ă©pargnera une situation oĂč vous avez sans le savoir envie d'un algorithme quadratique au lieu d'un algorithme linĂ©aire.



Je ne sais pas si quelqu'un se moquait de mon code, mais je suis sĂ»r - plus d'une ou deux fois j'ai Ă©crit une solution cent fois plus lente qu'elle n'aurait pu l'ĂȘtre. Mais dans ces cas, j'ai dĂ©libĂ©rĂ©ment Ă©crit sous-optimal. Par exemple, en C #, il existe une boucle for et une mĂ©thode de collecte Select (dans d'autres langues, elle est plus souvent appelĂ©e map). La boucle est plus rapide, mais je trouve l'approche fonctionnelle plus esthĂ©tique - et je l'utilise. Je sais qu'il y a peu de donnĂ©es, il n'y aura pas de goulot d'Ă©tranglement et j'Ă©cris du code qui, Ă  mon avis, est plus joli, plus lisible et donc meilleur. Il existe de nombreuses solutions de ce type en dĂ©veloppement - et je choisis d'Ă©crire du code productif uniquement lorsque je sais avec certitude que sinon, les prĂ©lĂšvements deviendront un problĂšme.



, -, , — . , , , . — LINQ . C# — yield — , , . — — , , . , , — .



- , yield, - . , LINQ . - , , , , . . LINQ — , .



— , . BenchmarkDotNet, Pro .NET Benchmarking, , , , , . , — .



, ? , .



Select — Select. , , , , , , .



, . " " — , . " ". , , .



, , — . . for select, , ? C#, , C# — . C++. . , , — . , , — ** . , .



, . , C#. . — , , — . , .






, . Queue, List — , . , , . — .



, . . — , . , , — , . , .



— “ ”, “ ” — , — , . , , , — . , — , , . , .



— . , ", C#, LINQ" , . , . — — — . , "yarn start" . , , . . , — — .



— . , , . — . , , , , , , . . , , . .



— , . , .



Il n'y a rien de mal que vous ayez choisi plus joli, mais pas plus rapide. Et il n'y a pas de tragédie quand vous ne saviez tout simplement pas que votre décision était super sous-optimale. Le problÚme commence lorsque vous dites que la productivité est une connerie et que vous laissez les individus le faire. Non frÚre. Apprendre à accélérer le code n'est pas le lot des nerds de la performance, cela fait partie de notre travail. Lorsque votre réticence à apprendre des choses complexes rend votre code à la fois lent et laid, alors vous avez de gros problÚmes.



Regardez mon podcast



All Articles