elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  (SOLUCIONADO) Se puede mejorar este FOR?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (SOLUCIONADO) Se puede mejorar este FOR?  (Leído 2,688 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
(SOLUCIONADO) Se puede mejorar este FOR?
« en: 26 Noviembre 2012, 10:15 am »

Hola,

Mi app trabaja sobre MILES de archivos y quisiera saber si puedo mejorar este for para disminuir el tiempo de procesado:

Código
  1.  
  2. Dim accepted_extensions As String = ".264 .3gp .asf .asx .avi .avc .bsf .bdmv .divx .dv .evo .f4v .flv .hdmov .m1v .m2t .m2ts .m2v .m4v .mkv .mov .mp4 .mpeg .mpg .mpv4 .mts .ogm .ogv .qt .rmvb .swf .ts .vob .webm .wmv"
  3.  
  4.    Public Sub PlaylistsWorkWithFilesInDir(ByVal aDir As DirectoryInfo)
  5.        consolebox.AppendText("Processing: " + aDir.ToString() + vbNewLine)
  6.        consolebox.SelectionStart = consolebox.Text.Length
  7.        consolebox.ScrollToCaret()
  8.        Dim aFile As FileInfo
  9.        For Each aFile In aDir.GetFiles()
  10.            If accepted_extensions.ToLower.Contains(aFile.Extension.ToLower) Then
  11.                Using writer As StreamWriter = New StreamWriter(aFile.DirectoryName.ToString() & "\" & aDir.Name & ".m3u", True, System.Text.Encoding.UTF8)
  12.                    writer.WriteLine(aFile.FullName.ToString())
  13.                End Using
  14.            End If
  15.        Next
  16.    End Sub
  17.  

Me pregunto si existirá algún método en el sistema para comprobar si el archivo es un archivo de video, algo así:
Código:
If IO.FileType(aFile) = "VideoFile" Then...


« Última modificación: 27 Noviembre 2012, 09:51 am por EleKtro H@cker » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Se puede mejorar este FOR?
« Respuesta #1 en: 26 Noviembre 2012, 13:12 pm »

Citar
Re: Se puede mejorar este FOR?

Algo que no me gusta y que no me parece que aporte a la performance de la aplicación, es que abres y cierras el archivo en cada iteración del for.

Me pregunto si existirá algún método en el sistema para comprobar si el archivo es un archivo de video, algo así:
Código:
If IO.FileType(aFile) = "VideoFile" Then...

En el framework no la hay.

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: Se puede mejorar este FOR?
« Respuesta #2 en: 26 Noviembre 2012, 16:22 pm »

Usa las Apis de Windows FindFile y FindNextFile trabajan mucho más rápido cuando son miles de archivos. También te recomiendo hacer el trabajo desde un BackgroundWorker y usar el evento ProgressChanged para modificar cualquier aspecto visual como una barra de progreso o un Label si lo tienes.

Hay 2 maneras de saber si un archivo corresponde a un tipo, primero lo que haces verificar de una lista de extensiones, así lo hice en una aplicación y tengo está lista:

Código
  1.           Public Video As String() = New String() {".ts", ".tts", ".m4v", ".mp4", ".mp4v", ".m2t", ".m2ts", ".mts", _
  2.                              ".mov", ".avi", ".m1v", ".m2v", ".mod", ".mp2v", ".mpa", ".mpe", _
  3.                              ".mpeg", ".mpg", ".mpv2", ".3g2", ".3gp2", ".3gp", ".3gpp", ".asf", _
  4.                              ".wmv", ".flv", ".ogg", ".mkv", ".amc", ".mpeg1", ".mpeg2", ".mpeg4", _
  5.                              ".mqv", ".qt", ".qtl", ".wmx", ".wmz"}

La otra es verificar las cabeceras de los archivos, pero eso es más incomodo XD
« Última modificación: 27 Noviembre 2012, 01:15 am por Keyen Night » En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
TomaSs

Desconectado Desconectado

Mensajes: 101



Ver Perfil
Re: Se puede mejorar este FOR?
« Respuesta #3 en: 26 Noviembre 2012, 20:44 pm »

Posiblemente esto te sirva, que tiene que ver con lo que te han dicho por aquí
;)
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: Se puede mejorar este FOR?
« Respuesta #4 en: 27 Noviembre 2012, 09:51 am »

Gracias a todos, especialmente por la larga explicación de Keyen, en cuanto tenga más organizado el form probaré lo dle findfiles.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Me ayudarian a mejorar este codigo¿? « 1 2 »
Programación Visual Basic
Murd3r3r 0f daT4 15 6,960 Último mensaje 10 Octubre 2009, 22:56 pm
por Murd3r3r 0f daT4
¿Mejorar este código en C baja Ubuntu?
Programación C/C++
bertamax 2 2,607 Último mensaje 8 Agosto 2010, 14:43 pm
por bertamax
se puede mejorar el aspecto de C « 1 2 »
Programación C/C++
..::NexuS::.. 12 8,167 Último mensaje 11 Enero 2011, 07:00 am
por BlackZeroX
¿Podría mejorar el rendimiento de éste PC?
Hardware
JuanmaWL 6 5,384 Último mensaje 11 Junio 2012, 01:25 am
por JuanmaWL
Se puede mejorar este codigo¿?
Programación C/C++
trioper 4 2,133 Último mensaje 29 Abril 2017, 12:16 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines