Articles of optimisation

Comment implémenter autocomplete sur un dataset massif

J’essaie d’implémenter quelque chose comme Google suggère sur un site Web que je construis et je suis curieux de savoir comment procéder sur un très grand dataset. Bien sûr, si vous avez 1000 objects, mettez-les en cache et passez-les en boucle. Mais comment vous y prenez-vous quand vous avez un million d’articles? En outre, supposons […]

Quelle est la différence entre intXX_t et int_fastXX_t?

J’ai récemment découvert l’existence du type standard le plus rapide , principalement int_fast32_t et int_fast64_t . On m’a toujours dit que, pour une utilisation normale sur une architecture grand public, il serait préférable d’utiliser un int & long classique qui devrait toujours correspondre à la capacité de lecture par défaut du processeur et éviter ainsi […]

Comment supprimer les doublons basés sur une clé dans Mongodb?

J’ai une collection dans MongoDB où il y en a autour (~ 3 millions d’enregistrements). Mon exemple d’enregistrement ressemblerait à { “_id” = ObjectId(“50731xxxxxxxxxxxxxxxxxxxx”), “source_references” : [ “_id” : ObjectId(“5045xxxxxxxxxxxxxx”), “name” : “xxx”, “key” : 123 ] } J’ai de nombreux enregistrements en double dans la collection ayant les mêmes source_references.key . (Par duplicata je […]

Est-ce que l’opérateur C # ‘is’ souffre de l’optimisation du mode de libération sur .NET 4?

Ci-dessous se trouve un dispositif de test simple. Il réussit dans les générations Debug et échoue dans les versions Release (VS2010, solution .NET4, x64): [TestFixture] public sealed class Test { [Test] public void TestChecker() { var checker = new Checker(); Assert.That(checker.IsDateTime(DateTime.Now), Is.True); } } public class Checker { public bool IsDateTime(object o) { return o […]

Accélérer le comptage des lignes dans MySQL

Supposons, à titre indicatif, que vous exécutiez une bibliothèque utilisant une simple table “books” MySQL avec trois colonnes: (identifiant, titre, statut) id est la clé primaire titre est le titre du livre le statut pourrait être une énumération décrivant l’état actuel du livre (par exemple DISPONIBLE, CHECKEDOUT, TRAITEMENT, MANQUANT) Une requête simple pour signaler combien […]

Création d’un index sur un horodatage pour optimiser la requête

J’ai une requête du formulaire suivant: SELECT * FROM MyTable WHERE Timestamp > [SomeTime] AND Timestamp < [SomeOtherTime] Je voudrais optimiser cette requête et je pense à mettre un index sur l’horodatage, mais je ne suis pas sûr que cela puisse aider. Idéalement, j’aimerais faire de l’horodatage un index clusterisé, mais MySQL ne prend pas […]

équivalent probable / peu probable pour MSVC

Le compilateur GCC prend en charge l’instruction __builtin_expect utilisée pour définir des macros probables et improbables. par exemple. #define likely(expr) __builtin_expect(!(expr), 0) #define unlikely(expr) __builtin_expect((expr), 0) Existe-t-il une déclaration équivalente pour le compilateur Microsoft Visual C ou quelque chose d’équivalent?

Utilisation du langage d’assemblage en C / C ++

Je me rappelle avoir lu quelque part que pour optimiser et accélérer certaines sections du code, les programmeurs écrivent cette section en langage assembleur. Mes questions sont – Est-ce que cette pratique est toujours faite? et comment fait-on cela? L’écriture dans Assembly Language n’est-elle pas un peu trop lourde et archaïque? Lorsque nous compilons du […]

Les variables globales signifient-elles un code plus rapide?

J’ai lu récemment, dans un article sur la programmation de jeux écrit en 1996, que l’utilisation de variables globales est plus rapide que la transmission de parameters. Était-ce toujours vrai, et si oui, est-ce toujours le cas aujourd’hui?

Accélérer Python

Ce sont vraiment deux questions, mais elles sont très similaires et, pour simplifier, je pensais que je les ferais tout simplement ensemble: Premièrement : étant donné un projet python établi, quels sont les moyens décents de l’accélérer au-delà de l’optimisation en code? Deuxièmement : Lorsque vous écrivez un programme à partir de zéro dans Python, […]