Maison développement back-end tutoriel php Solution pratique pour gérer l'intersection et l'union de tableaux PHP à grande échelle

Solution pratique pour gérer l'intersection et l'union de tableaux PHP à grande échelle

May 01, 2024 am 11:27 AM
php数组 数据处理

Solution pratique pour gérer lintersection et lunion de tableaux PHP à grande échelle

Une solution pratique pour traiter l'intersection et l'union de tableaux PHP à grande échelle

Introduction

Lors du traitement de données volumineuses, il est souvent nécessaire d'effectuer des opérations d'intersection et d'union de tableaux. Mais pour les grands tableaux contenant des millions ou des milliards d’éléments, les fonctions PHP par défaut peuvent être inefficaces ou souffrir de problèmes de mémoire. Cet article présentera plusieurs solutions pratiques pour améliorer considérablement les performances lorsque vous travaillez avec de grandes baies.

Méthode 1 : Utiliser une table de hachage

  • Convertissez un tableau en table de hachage, en utilisant des éléments comme clés.
  • Parcourez un autre tableau et vérifiez si la clé existe dans la table de hachage. S'il est présent, l'élément est dans l'intersection.
  • Complexité temporelle : O(n)

Exemple de code :

$arr1 = range(1, 1000000);
$arr2 = range(500001, 1500000);

$hash = array_flip($arr1);

$intersection = array_keys(array_intersect_key($hash, $arr2));
Copier après la connexion

Méthode 2 : Utilisation de la bibliothèque Hashes.php

  • Utilisez une bibliothèque comme Hashes.php, qui fournit une table de hachage efficace. réalisé.
  • Pour les opérations d'intersection, utilisez la méthode Intersect() 方法。对于并集运算,使用 Union().
  • Complexité temporelle : O(n)

Exemple de code :

use Hashes\Hash;

$map = new Hash();
foreach ($arr1 as $val) {
    $map->add($val);
}

$intersection = $map->intersect($arr2);
$union = $map->union($arr2);
Copier après la connexion

Méthode 3 : Utilisez des opérations au niveau du bit

  • pour convertir chaque nombre du tableau en un bitmap au niveau du bit.
  • L'intersection peut être obtenue en exécutant ET deux bitmaps.
  • L'union peut être obtenue en effectuant un OU entre deux bitmaps.
  • Complexité temporelle : O(n), où n est le nombre de chiffres du plus grand nombre du tableau.

Exemple de code :

function bitInterset($arr1, $arr2) {
    $max = max(max($arr1), max($arr2));
    $bitSize = 32;  // 如果 max > (2^32 - 1),可以调整 bitSize

    $bitmap1 = array_fill(0, $bitSize, 0);
    $bitmap2 = array_fill(0, $bitSize, 0);

    foreach ($arr1 as $num) {
        $bitmap1[$num >> 5] |= (1 << ($num & 31));
    }
    foreach ($arr2 as $num) {
        $bitmap2[$num >> 5] |= (1 << ($num & 31));
    }

    $intersection = [];
    for ($i = 0; $i < $bitSize; $i++) {
        $mask = $bitmap1[$i] & $bitmap2[$i];
        for ($j = 0; $j < 32; $j++) {
            if (($mask >> $j) & 1) {
                $intersection[] = ($i << 5) | $j;
            }
        }
    }

    return $intersection;
}
Copier après la connexion

Exemple pratique

Considérons un tableau contenant un million d'éléments et nous voulons trouver son intersection et son union avec un autre tableau contenant cinq millions d'éléments.

Utilisation de la méthode 1 (table de hachage) :

  • Le traitement de l'intersection prend 4,5 secondes
  • Le traitement de l'union prend 4,12 secondes

Utilisation de la bibliothèque Hashes.php (Méthode 2) :

  • Le traitement de l'intersection prend 2,8 secondes
  • Il faut 2,45 secondes pour traiter l'union

Utilisation de l'opération au niveau du bit (Méthode 3) :

  • Il faut 1,2 seconde pour traiter l'intersection
  • Il faut 1,08 seconde pour traiter l'union

Comme vous pouvez le voir, l'opération au niveau du bit est très efficace dans le traitement d’un si grand tableau offre des performances optimales.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pandas lit facilement les données de la base de données SQL Pandas lit facilement les données de la base de données SQL Jan 09, 2024 pm 10:45 PM

Outil de traitement des données : Pandas lit les données dans les bases de données SQL et nécessite des exemples de code spécifiques. À mesure que la quantité de données continue de croître et que leur complexité augmente, le traitement des données est devenu une partie importante de la société moderne. Dans le processus de traitement des données, Pandas est devenu l'un des outils préférés de nombreux analystes de données et scientifiques. Cet article explique comment utiliser la bibliothèque Pandas pour lire les données d'une base de données SQL et fournit des exemples de code spécifiques. Pandas est un puissant outil de traitement et d'analyse de données basé sur Python

Comment Golang améliore-t-il l'efficacité du traitement des données ? Comment Golang améliore-t-il l'efficacité du traitement des données ? May 08, 2024 pm 06:03 PM

Golang améliore l'efficacité du traitement des données grâce à la concurrence, à une gestion efficace de la mémoire, à des structures de données natives et à de riches bibliothèques tierces. Les avantages spécifiques incluent : Traitement parallèle : les coroutines prennent en charge l'exécution de plusieurs tâches en même temps. Gestion efficace de la mémoire : le mécanisme de récupération de place gère automatiquement la mémoire. Structures de données efficaces : les structures de données telles que les tranches, les cartes et les canaux accèdent et traitent rapidement les données. Bibliothèques tierces : couvrant diverses bibliothèques de traitement de données telles que fasthttp et x/text.

Utilisez Redis pour améliorer l'efficacité du traitement des données des applications Laravel Utilisez Redis pour améliorer l'efficacité du traitement des données des applications Laravel Mar 06, 2024 pm 03:45 PM

Utilisez Redis pour améliorer l'efficacité du traitement des données des applications Laravel Avec le développement continu des applications Internet, l'efficacité du traitement des données est devenue l'une des priorités des développeurs. Lors du développement d'applications basées sur le framework Laravel, nous pouvons utiliser Redis pour améliorer l'efficacité du traitement des données et obtenir un accès et une mise en cache rapides des données. Cet article expliquera comment utiliser Redis pour le traitement des données dans les applications Laravel et fournira des exemples de code spécifiques. 1. Introduction à Redis Redis est une mémoire de données haute performance

Une exploration des techniques d'optimisation des performances pour les tableaux PHP Une exploration des techniques d'optimisation des performances pour les tableaux PHP Mar 13, 2024 pm 03:03 PM

Le tableau PHP est une structure de données très courante qui est souvent utilisée pendant le processus de développement. Cependant, à mesure que la quantité de données augmente, les performances de la baie peuvent devenir problématiques. Cet article explorera certaines techniques d'optimisation des performances pour les tableaux PHP et fournira des exemples de code spécifiques. 1. Utilisez des structures de données appropriées En PHP, en plus des tableaux ordinaires, il existe d'autres structures de données, telles que SplFixedArray, SplDoublyLinkedList, etc., qui peuvent fonctionner mieux que les tableaux ordinaires dans certaines situations.

Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ? Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ? Jun 01, 2024 pm 01:34 PM

Comparez les capacités de traitement des données de Laravel et CodeIgniter : ORM : Laravel utilise EloquentORM, qui fournit un mappage relationnel classe-objet, tandis que CodeIgniter utilise ActiveRecord pour représenter le modèle de base de données en tant que sous-classe de classes PHP. Générateur de requêtes : Laravel dispose d'une API de requêtes chaînées flexible, tandis que le générateur de requêtes de CodeIgniter est plus simple et basé sur des tableaux. Validation des données : Laravel fournit une classe Validator qui prend en charge les règles de validation personnalisées, tandis que CodeIgniter a moins de fonctions de validation intégrées et nécessite un codage manuel des règles personnalisées. Cas pratique : l'exemple d'enregistrement d'utilisateur montre Lar

Outil de traitement de données : techniques efficaces pour lire des fichiers Excel avec des pandas Outil de traitement de données : techniques efficaces pour lire des fichiers Excel avec des pandas Jan 19, 2024 am 08:58 AM

Avec la popularité croissante du traitement des données, de plus en plus de personnes s’intéressent à la manière d’utiliser efficacement les données et de les faire fonctionner pour elles-mêmes. Dans le traitement quotidien des données, les tableaux Excel sont sans aucun doute le format de données le plus répandu. Cependant, lorsqu’une grande quantité de données doit être traitée, l’utilisation manuelle d’Excel deviendra évidemment très longue et laborieuse. Par conséquent, cet article présentera un outil de traitement de données efficace - les pandas, et comment utiliser cet outil pour lire rapidement des fichiers Excel et effectuer un traitement de données. 1. Introduction aux pandas pandas

Utiliser Pandas pour renommer les noms de colonnes pour un traitement efficace des données Utiliser Pandas pour renommer les noms de colonnes pour un traitement efficace des données Jan 11, 2024 pm 05:14 PM

Traitement efficace des données : L'utilisation de Pandas pour modifier les noms de colonnes nécessite des exemples de code spécifiques. Le traitement des données est une partie très importante de l'analyse des données, et pendant le processus de traitement des données, il est souvent nécessaire de modifier les noms de colonnes des données. Pandas est une puissante bibliothèque de traitement de données qui fournit une multitude de méthodes et de fonctions pour nous aider à traiter les données rapidement et efficacement. Cet article explique comment utiliser Pandas pour modifier les noms de colonnes et fournit des exemples de code spécifiques. Dans l'analyse réelle des données, les noms de colonnes des données d'origine peuvent avoir des normes de dénomination incohérentes et sont difficiles à comprendre.

Premiers pas : utiliser le langage Go pour traiter le Big Data Premiers pas : utiliser le langage Go pour traiter le Big Data Feb 25, 2024 pm 09:51 PM

En tant que langage de programmation open source, le langage Go a progressivement reçu une attention et une utilisation généralisées ces dernières années. Il est privilégié par les programmeurs pour sa simplicité, son efficacité et ses puissantes capacités de traitement simultané. Dans le domaine du traitement du Big Data, le langage Go a également un fort potentiel. Il peut être utilisé pour traiter des données massives, optimiser les performances et peut être bien intégré à divers outils et frameworks de traitement du Big Data. Dans cet article, nous présenterons quelques concepts et techniques de base du traitement du Big Data en langage Go, et montrerons comment utiliser le langage Go à travers des exemples de code spécifiques.

See all articles