


Solution pratique pour gérer l'intersection et l'union 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));
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);
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; }
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds





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

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 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

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.

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

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

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.

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.
