my little program is checking what type of script website use and it use over 80% cpu i7 processor. I wonder is it normal?
Code:
public static class EnginesMatcher
{
public static readonly Regex Drupal1 =
new Regex(
@"/misc/drupal\.js|Drupal\.settings|href=""http://drupal\.org""|\?q=node/[0-9]+|/\?q=user/register|/\?q=user/password|/user/register\?destination|<li class=""collapsed""><a href=""/node/add"">|/dpl3/files/|/modules/node/",
RegexOptions.Compiled);
public static readonly Regex XE1 =
new Regex(
@"XpressEngine|content=""zeroboardXE|content=""xe_board""|var zbxe_session_name|/xe\.css\?2|/xeicon/favicon\.ico""|#xe-editor-container-1|xpress_xeditor",
RegexOptions.Compiled);
//and 60 more such regex
In another class
public async Task<Result> Match(string url)
{
if (!await Open(url).ConfigureAwait(false)) return ResultKey;
if (EnginesMatcher.Drupal1.IsMatch(html))
{
return new Result()
{
Key = AResultKey.Success,
LogFile = "Drupal.txt",
Message = "Drupal",
Url = url
};
}
if (EnginesMatcher.XE1.IsMatch(html))
{
return new Result()
{
Key = AResultKey.Success,
LogFile = "Drupal.txt",
Message = "Drupal",
Url = url
};
}
The Match(url) function is in ForeachAsyncLoop, the program check about 4000 links/minute. When I disable all regexs it uses up to 20% cpu, can I increase regex performance?emphasized text