์ ๊ทํํ์ ์ฑ๋ฅ ํฅ์ ํ
๋ฐ์ดํฐ ์จ์ดํ์ฐ์ง์ ETL ํ๋ก์ธ์ค๋ ๋ฐ๋์ ํ์ํ๋ค. ์ด ๊ณผ์ ์์ ๋ฐ์ดํฐ ํด๋ ์ง์ ํฌํจํ ํ
์คํธ ํ๋ก์ธ์ฑ์ ์งํํ๊ฒ ๋๋๋ฐ, ์ ๊ทํํ์์ ์ด ํ
์คํธ ํ๋ก์ธ์ฑ์ ํต์ฌ ์์๋ค ์ค ํ๋์ด๋ค. ์ผ๋ฐ์ ์ธ ์ํฉ์์ ์ ๊ทํํ์์ ์๋์ ๊ฐ์ ํํ๋ก ์ฌ์ฉํ๋ค.
var value = "abcdefg"; var pattern = @"^abc"; if (Regex.IsMatch(value, pattern)) { Console.WriteLine("Match found"); }
์์ ์์ ์ ๊ฐ์ด ์ ๊ทํํ์์ ์ ์ ๋ฉ์๋์ธ Regex.Ismatch()์ ํํ๋ก ์ฐ์๋ค. ๋ฌผ๋ก ์๋์ ๊ฐ์ ํํ๋ก ์ฐ์ผ ์๋ ์๋ค.
var value = "abcdefg"; var pattern = @"^abc"; var regex = new Regex(pattern); if (regex.IsMatch(value)) { Console.WriteLine("Match found"); }
์์ ์์ ์ฝ๋๋ ์ ์ ๋ฉ์๋์ธ Regex.IsMatch()๋ฅผ ์ฌ์ฉํ๋ ๋์ Regex ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด ๋์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น? ๋ฐ๋ก ์ฑ๋ฅ์ ์ฐจ์ด๋ผ๊ณ ํ ์ ์๋ค. ์ปดํ์ผ ์์ ์ ์ด๋ฏธ ์ ๊ทํํ์ ๊ฐ์ฒด๋ฅผ ํฌํจํ๊ณ ์๋๊ฐ, ๋ฐํ์ ์์ ์ ๊ทธ๋๊ทธ๋ ์ ๊ทํํ์ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํ ์์ผ ์ฌ์ฉํ๋๊ฐ์ ์ฐจ์ด๋ผ๊ณ ๋ ํ ์ ์๋๋ฐ, ์ผ๋ฐ์ ์ธ ์ฉ๋๋ก ์ฌ์ฉํ๋ค๋ฉด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ๋ค ์ฌ์ด์๋ ํฐ ์ฐจ์ด๊ฐ ์๋ค. ํ์ง๋ง, ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ์์ด์๋ ์กฐ๊ทธ๋งํ ์ฐจ์ด๊ฐ ์์ฒญ๋ ์ฑ๋ฅ์ ํฅ์ ํน์ ์ ํ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
Regex.IsMatch() ๋ฉ์๋๋ ์ ์ ๋ฉ์๋๋ก์ ๋ด๋ถ์ ์ผ๋ก ์๋์ ๊ฐ์ ํํ๋ก ๊ตฌํ๋๋ค.
public static IsMatch(string input, string pattern) { var regex = new Regex(pattern); return regex.IsMatch(input); }
์ฆ, ์ ์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋๋ง๋ค Regex ์ธ์คํด์ค๊ฐ ๋ง๋ค์ด์ง๊ณ , ์ฐ์ด๊ณ , ์์ด์ง๊ธฐ๋ฅผ ๋ฐ๋ณตํ๋ค. ๋ฐ๋ผ์, ๋์ผํ ๋ฐ๋ณต์์
์ ํ๋ ๊ฒฝ์ฐ ๋์ผํ Regex ์ธ์คํด์ค๋ฅผ ํ ๋ฒ ๋ง๋ค์ด๋๊ณ ์ฌํ์ฉ์ ํ๋ค๋ฉด ์์ฒญ๋ ์ฑ๋ฅ์ ํฅ์์ ๋ณผ ์ ์๋ค. http://www.dotnetperls.com/regex-performance ์์๋ ์ปดํ์ผ์ ํ๊ฒ ๋๋ค๋ฉด ๋๋ต 30%์ ์ฑ๋ฅ ํฅ์์ ๋ํ๋ธ๋ค๊ณ ํ๋ค.
๊ฐ๋ฐ์๋ค์ ์ธ๊ณ์์๋ If you are doing something repeatedly, you are doing it wrong ์ด๋ผ๋ ๊ธ์ธ์ด ์๋ค. ์ฆ, ๋ญ๊ฐ ๋์ผํ ์์
์ ๋ฐ๋ณต์ ์ผ๋ก ํ๋ค๋ฉด, ๊ทธ๊ฑด ๋ญ๊ฐ ์๋ชป๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ด๋ค. ๊ฒฐ๊ตญ ๊ทธ๋ถ๋ถ์์ ์ฑ๋ฅ ํฅ์์ ๊พํ ์ ์๋ค๋ ๋ง๊ณผ ๋์ผํ๋ค. ์์ ์ ๊ทํํ์ ์์ ๋ ๋ง์ฐฌ๊ฐ์ง๋ก, ๋์ผํ ์ ๊ทํํ์์ ์ฌ๋ฌ๋ฒ ์ฌ์ฉํ๋ค๋ฉด, ๊ทธ๊ฒ์ ๋ฏธ๋ฆฌ ์ปดํ์ผ์ ํด๋๊ณ ์ฌํ์ฉํ ์ ์๊ฒ๋ ํ๋ ๊ฒ์ด ์ฑ๋ฅ ํฅ์์ ์ ๋ฆฌํ๋ค๋ ๋ง๊ณผ ๋์ผํ๋ค.
http://stackoverflow.com/questions/5854063/how-to-optimize-regular-expression-performance
http://stackoverflow.com/questions/414328/using-static-regex-ismatch-vs-creating-an-instance-of-regex
http://www.dotnetperls.com/regex-performance
http://blogs.msdn.com/b/bclteam/archive/2010/06/25/optimizing-regular-expression-performance-part-i-working-with-the-regex-class-and-regex-objects.aspx
http://blogs.msdn.com/b/bclteam/archive/2010/08/03/optimizing-regular-expression-performance-part-ii-taking-charge-of-backtracking.aspx
http://blogs.msdn.com/b/bclteam/archive/2011/03/28/optimizing-regex-performance-part-3-ron-petrusha.aspx