Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Store ZipFile entries in dictionary for faster lookup

Abierto
#608 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
csharp
Área
tooling

Línea de trabajo

Comienza en el TODO de src/ICSharpCode.SharpZipLib/Zip/ZipFile.cs alrededor de la línea 765 y sigue el uso que FindEntry hace de entries_. Revisa cómo funciona la indexación numérica existente. El objetivo se habrá cumplido cuando la búsqueda sea más rápida para archivos grandes, admita un comparador de cadenas proporcionado y conserve la indexación numérica.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement zip
Steps to reproduce
  1. Create ZipFile instance
  2. Access ZipEntry using FindEntry
  3. Entry is found slowly for large archives and only if name matches verbatim with no option to override string comparison
Expected behavior

Enhancement- ZipEntry is found in a short amount of time and can match using a custom string comparison.

Address the TODO found in ZipFile.cs:765, by storing ZipEntry's in "entries_" variable as a Dictionary<string, ZipEntry> with the ZipEntry.Name as the key to speed up search and indexing at cost of a little more memory usage.

Existing numerical indexing can remain by way of ElementAt LINQ extension or maintaining a separate list of the keys.

Upon creation of the "entries_" dictionary, provide option for IEqualityComparer to allow for non-standard string comparisons when finding entries, as in the case of normalizing path delimiters between file systems.

Actual behavior

It's found but only matches the name verbatim and is really slow in large archives.

Version of SharpZipLib v1.3.1
Obtained from
  • Package installed using NuGet
Lenguaje dominante
C#
Estrellas
3.9k
Forks
1k
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de icsharpcode/SharpZipLib

Todos los issues de icsharpcode/SharpZipLib

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.