How Machine Learning Services Help Business?
<https://www.brsoftech.com/machine-learning-solutions.html>

   - With Machine Learning consulting services businesses can consider cost
   reduction while boosting performance.
   - It helps organizations to timely finish the task with utmost accuracy.
   - Retrieve information using cutting edge software tools.
   - Machine learning works according to recent trends and specifications.
   - It automates the analysis of past patterns and historical data to
   predict the future.


On Fri, Mar 15, 2024 at 12:23 PM 'marcel...@googlemail.com' via
elixir-lang-core <elixir-lang-core@googlegroups.com> wrote:

> The benchmark results I'm getting are indeed not as dramatic as the fprof
> results, but on the other hand also more than the 5% mentioned in the PR
> which introduced the check:
> https://github.com/elixir-lang/elixir/pull/9040
>
> ```elixir
> regex = ~r/^([a-z][a-z0-9\+\-\.]*):/i
> re_pattern = regex.re_pattern
>
> Benchee.run(%{
>   "Regex.run/2" => fn -> Regex.run(regex, "foo") end,
>   ":re.run/3" => fn -> :re.run("foo", re_pattern, [{:capture, :all,
> :binary}]) end
> })
> ```
>
> ```
> Name                  ips        average  deviation         median
> 99th %
> :re.run/3          2.88 M      346.90 ns  ±3623.51%         333 ns
> 417 ns
> Regex.run/2        1.98 M      504.74 ns  ±5851.21%         416 ns
> 542 ns
>
> Comparison:
> :re.run/3          2.88 M
> Regex.run/2        1.98 M - 1.46x slower +157.84 ns
> ```
> On Friday 15 March 2024 at 07:20:11 UTC+1 jan.k...@gmail.com wrote:
>
>> The difference was definitely measurable just in pure running time of the
>> code, setting aside fprof. I'll post what I have after work today.
>>
>> On Thursday, March 14, 2024 at 10:21:25 PM UTC+1 José Valim wrote:
>>
>>> Do you have benchmarks or only the fprof results? fprof is not a
>>> benchmarking tool: comparing fprof results from different code may be
>>> misleading. Proper benchmarking is preferrable. I am benchmarking locally
>>> and I cannot measure any relevant difference even with the whole version
>>> checking removed.
>>>
>>> On Thu, Mar 14, 2024 at 6:01 PM Jan Krüger <jan.k...@gmail.com> wrote:
>>>
>>>> Thanks a lot. I'm also happy to share our case, and my fprof results,
>>>> if that helps. I am very sure that my erlang, and elixir versions match, on
>>>> the machine where I've tested this. Replacing Regex.run with an identical
>>>> call to :re.run should show the performance improvement I've mentioned. The
>>>> regex we've tested this on is:
>>>>
>>>> ~r/^([a-z][a-z0-9\+\-\.]*):/i
>>>>
>>>> On Thursday, March 14, 2024 at 5:55:47 PM UTC+1
>>>> marcel...@googlemail.com wrote:
>>>>
>>>>> I'm the maintainer of RDF.ex library with the RDF.IRI module mentioned
>>>>> in the OP. I can confirm that this fix doesn't affect the problem, since
>>>>> we're actually not using `URI.parse/1` most of the time (we use it only
>>>>> when dealing with relative URIs). Even in this case the `Regex.version/0`
>>>>> call in `Regex.safe_run/3` (
>>>>> https://github.com/elixir-lang/elixir/blob/b8fca42e58850b56f65d0fb8a2086f2636141f61/lib/elixir/lib/regex.ex#L533)
>>>>> still performs the `:erlang.system_info/0` call.
>>>>>
>>>>> On Thursday 14 March 2024 at 17:15:40 UTC+1 jan.k...@gmail.com wrote:
>>>>>
>>>>>> I read the commit, and I don't it fixes what our actual problem was.
>>>>>> See my comment above. The problem is the actual call to :re.version, not
>>>>>> the recompilation of the regex
>>>>>>
>>>>>> On Thursday, March 14, 2024 at 4:37:43 PM UTC+1 José Valim wrote:
>>>>>>
>>>>>>> I have pushed a fix to main. But also note we provide precompiled
>>>>>>> Elixir versions per OTP version. Using a matching version will always 
>>>>>>> give
>>>>>>> you the best results and that's not only about regexes. :)
>>>>>>>
>>>>>>> On Thu, Mar 14, 2024 at 2:20 PM Jan Krüger <jan.k...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> I've recently had to work on a code base that parses largish RDF
>>>>>>>> XML files. Part of the code base does relatively simple but regular
>>>>>>>> expression matches, but since the files are large, quite a lot of 
>>>>>>>> Regex.run
>>>>>>>> calls. While profiling I've noticed, that there are callouts to
>>>>>>>> :erlang.system_info, which fetches the PCRE version BEAM was compiled
>>>>>>>> against.
>>>>>>>>
>>>>>>>> An example regular expression from the code base in question
>>>>>>>> matches the schema part of a URL. I've replaced Regex.run with erlang's
>>>>>>>> :re.run for testing purposes, and at least for this case, there 
>>>>>>>> performance
>>>>>>>> gain is quite dramatic.
>>>>>>>>
>>>>>>>> Comparing fprof results:
>>>>>>>>
>>>>>>>> ```
>>>>>>>> RDF.IRI.scheme/1
>>>>>>>> 1176473   30615.618    2354.355
>>>>>>>> ---
>>>>>>>> RDF.IRI.scheme/1
>>>>>>>> 1176473    3531.955    2353.905
>>>>>>>> ```
>>>>>>>>
>>>>>>>> I found this thread in the google group, which actually talk about
>>>>>>>> the reasoning for fetching the version, and proposes and alternative.
>>>>>>>>
>>>>>>>>
>>>>>>>> https://groups.google.com/g/elixir-lang-core/c/CgFdxIONvGg/m/HN9ryeVXAwAJ?pli=1
>>>>>>>>
>>>>>>>> Especially
>>>>>>>>
>>>>>>>> ```
>>>>>>>> Taking a further look at the code, the issue with recompiling
>>>>>>>> regexes on the fly is that it makes executing the regexes more 
>>>>>>>> expensive,
>>>>>>>> as we need to compute the version on every execution. We could store 
>>>>>>>> the
>>>>>>>> version in ETS but that would have performance issues. Storing in a
>>>>>>>> persistent_term would be great, but at the moment we support Erlang/OTP
>>>>>>>> 20+. Thoughts?
>>>>>>>> ```
>>>>>>>>
>>>>>>>> Since this has a fairly noticeable impact, at least on all tests
>>>>>>>> I've run, I wanted to start a discussion, if this could be
>>>>>>>> implemented/improved now.
>>>>>>>>
>>>>>>>> --
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "elixir-lang-core" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>> send an email to elixir-lang-co...@googlegroups.com.
>>>>>>>> To view this discussion on the web visit
>>>>>>>> https://groups.google.com/d/msgid/elixir-lang-core/44d498c7-82a4-46d2-89be-7919400e0297n%40googlegroups.com
>>>>>>>> <https://groups.google.com/d/msgid/elixir-lang-core/44d498c7-82a4-46d2-89be-7919400e0297n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>> .
>>>>>>>>
>>>>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "elixir-lang-core" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to elixir-lang-co...@googlegroups.com.
>>>>
>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/elixir-lang-core/507e6bd5-9be9-49a3-b039-45c2173fd509n%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/elixir-lang-core/507e6bd5-9be9-49a3-b039-45c2173fd509n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
> You received this message because you are subscribed to the Google Groups
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to elixir-lang-core+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elixir-lang-core/fc14260c-67cb-4ee2-801d-6260794b24afn%40googlegroups.com
> <https://groups.google.com/d/msgid/elixir-lang-core/fc14260c-67cb-4ee2-801d-6260794b24afn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>


-- 
Kind Regards,
Manish Kr. Sharma
Digital Marketing Manager

Website: www.brsoftech.com
E-mail: manish.sha...@brsoftech.org

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CABUB1NRDgRTi1woeWX1Shn%3DfuHQMU3cByAUWASXZp4Ye1jif2g%40mail.gmail.com.

Reply via email to