Script slow in Windows 10 Topic is solved

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
chinagreenelvis
Posts: 133
Joined: 19 Oct 2015, 16:21

Script slow in Windows 10

20 Apr 2018, 23:06

I recently made the jump from Windows 7 to Windows 10 and kept my old installation on a new partition. Windows 10 is a clean install. The following script runs fine in Win7, but is ridiculously slow in Win10. In 7, the millisecond messagebox I added returns about 1500; in 10 it's around 35000.

Code: Select all

; Winamp Playlists
; by chinagreenelvis
; Version 0.01
 
#NoEnv
#SingleInstance force
#Persistent
SetWorkingDir %A_ScriptDir%

EnvGet, ProgramFiles32, ProgramFiles(x86)

INIFile = WinampPlaylists.ini
DefaultExts = mp3,ogg,flac,wma,wav,spc,m4a,nsf,nsfe,rsn,vgz

Global Extensions

IfNotExist, %INIFile%
{
	IniWrite, 1, %INIFile%, Settings, TrayIcon
	IniWrite, x, %INIFile%, Directories
	IniWrite, %DefaultExts%, %INIFile%, FileTypes, Extensions
}

IniRead, TrayIcon, %INIFile%, Settings, TrayIcon
IniRead, Extensions, %INIFile%, FileTypes, Extensions

If (!TrayIcon)
{
	Menu, Tray, NoIcon
}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; START

Start := A_TickCount

;DeletePlaylists()
FileRemoveDir, Playlists\Music, 1

IniRead, OutputVar, %INIFile%, Directories
Loop Parse, OutputVar, `n
{
	MakePlayLists(A_LoopField)
}

RandomizePlaylists()

Difference := A_TickCount - Start
MsgBox, %Difference%
ExitApp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FUNCTIONS

ProcessExist(Name)
{
	Process, Exist, %Name%
	return Errorlevel
}

DeletePlaylists()
{
	Loop Files, Playlists\Music\*.m3u, R
	{
		FileDelete, %A_LoopFileFullPath%
	}
}

MakePlayLists(Directory)
{
	SplitPath, Directory, TopFolder
	;MsgBox, %Directory%, %TopFolder%
	Loop Files, %Directory%\*.*, D
	{
		Folder = %A_LoopFileName%
		Dir = %A_LoopFileFullPath%
		;MsgBox, %Folder%, %Dir%
		Loop Files, %Dir%\*.*, R
		{
			File = %A_LoopFileFullPath%
			;MsgBox, %Extensions%
			If A_LoopFileExt contains %Extensions%
			{
				FileCreateDir, Playlists\Music\%TopFolder%\%Folder%
				FileAppend, %File%`n, Playlists\Music\%TopFolder%\%Folder%\!Playlist.m3u
				
				SplitPath, File, Filename, FileDir
				SplitPath, FileDir, SubFolder
				
				If (SubFolder != Folder) && (SubFolder != TopFolder)
				;MsgBox, %SubFolder%
				{
					FileCreateDir, Playlists\Music\%Folder%\%SubFolder%
					FileAppend, %File%`n, Playlists\Music\%Folder%\%SubFolder%\!Playlist.m3u
				}
			}
		}
	}
}

RandomizePlaylists()
{
	Loop Files, Playlists\Music\*.m3u, R
	{
		File = %A_LoopFileFullPath%
		;MsgBox, %A_LoopFileFullPath%
		FileRead, Playlist, %File%
		FileDelete,  %File%
		Sort Playlist, Random U
		FileAppend, %Playlist%, %File%
	}
}
chinagreenelvis
Posts: 133
Joined: 19 Oct 2015, 16:21

Re: Script slow in Windows 10  Topic is solved

21 Apr 2018, 06:02

Turns out the problem is FileAppend opening and closing the files each time they're written to. For some reason this process is much slower in Windows 10 than in 7. Solved the problem by using FileOpen() and WriteLine().

Code: Select all

MakePlayLists(Directory)
{
	SplitPath, Directory, TopFolder
	;MsgBox, %Directory%, %TopFolder%
	Loop Files, %Directory%\*.*, D
	{
		Folder = %A_LoopFileName%
		Dir = %A_LoopFileFullPath%
		;MsgBox, %Folder%, %Dir%
		FileCreateDir, Playlists\Music\%TopFolder%\%Folder%
		PlayFile = Playlists\Music\%TopFolder%\%Folder%\!Playlist.m3u
		;MsgBox, %PlayFile%
		PlaylistFile := FileOpen(PlayFile, "a `n")
		Loop Files, %Dir%\*.*, FR
		{
			File = %A_LoopFileFullPath%
			;MsgBox, %Extensions%
			If A_LoopFileExt contains %Extensions%
			{			
				PlaylistFile.WriteLine(File)
			}
		}
		Loop Files, %Dir%\*.*, D
		{
			If (A_LoopFileFullPath)
			{
				SubFolder = %A_LoopFileName%
				Dir = %A_LoopFileFullPath%
				FileCreateDir, Playlists\Music\%Folder%\%SubFolder%
				PlayFile = Playlists\Music\%Folder%\%SubFolder%\!Playlist.m3u
				;MsgBox, %PlayFile%
				PlaylistFile := FileOpen(PlayFile, "a `n")
				Loop Files, %Dir%\*.*, F
				{
					File = %A_LoopFileFullPath%
					;MsgBox, %Extensions%
					If A_LoopFileExt contains %Extensions%
					{			
						PlaylistFile.WriteLine(File)
					}
				}
			}
		}
	}
}

Return to “Ask for Help (v1)”

Who is online

Users browsing this forum: Google [Bot], prototype_zero and 269 guests