Re: ftbench: last updates

Werner LEMBERG <[email protected]>
Newsgroups gmane.comp.fonts.freetype.devel
Message-ID <[email protected]>
Hello Ahmet,


> -I have changed the * and the sentence

Thanks.  Unfortunately, I was unclear that '*x*' in my e-mail is meant
as Markdown syntax and not to be taken verbatim.  In other words, 'x'
should be typeset in italics, similar to a mathematical variable.
Sorry for that, and please fix.

Something different: Please don't use `\r` in messages for newlines.
Use `\n` instead, which is standard (file `testing.mk`).

>> I already changed the working way of the timing. I only start the
>> benchmark at beginning and stop at the end.
>
> i mean, it times chunks, not single iteration.  timer starts at the
> beginning of the chunk and stop at the end (then divide the results
> size of a chunk). because of it does not time single iteration, it
> is already a bulk test.

Ok.

>> BTW, I suggest that you add another sentence, explaining *why*
>> there are two values at all.
>
> actually, i didnt get the reason well but it may differ even with
> same flags. i need help in this case.

Alexei, please have a look.  It seems that only(?) the 'Stroke' test
is affected...

> the code seems producing more accurate results after splitting the
> results into chunks. are results seem satisfactory in your machine?

Alas, they aren't.  Running your code on my GNU/Linux machine, I get
percental differences up to 14%.

BTW, I've also just compiled `valgrind` from its git repository (to be
sure that it exactly fits my 'libc' library version) and run

```
valgrind --trace-children=yes make baseline
valgrind --trace-children=yes make benchmark
```

expecting to get identical results, because `valgrind` uses a CPU
emulator.  However, to my great surprise, they are *not* identical,
and sometimes the values differ even enormously.  Has anybody an idea
why this happens?  AFAICS from valgrind's source files, the
`clock_gettime` function *is* caught.

Note that with valgrind the creation of the webpage fails; I get

```
Traceback (most recent call last):
  File "/home/wl/ahmet/tohtml.py", line 310, in <module>
    main()
  File "/home/wl/ahmet/tohtml.py", line 67, in main
    generate_total_results_table(html_file, BASELINE_DIR, BENCHMARK_DIR)
  File "/home/wl/ahmet/tohtml.py", line 192, in generate_total_results_table
    diff = ((baseline - benchmark) / baseline) * 100
ZeroDivisionError: float division by zero
```

Attached are the two directories from valgrind runs.  Comparing this
with non-valgrind values I think there is a fundamental interaction
problem with the `bench` program: It seems that `bench` controls the
number of loops *in addition* to what you specify via the command
line.  Unfortunately, I don't have time right now to check this by
myself.

Too bad that you didn't try `valgrind` by yourself earlier, as I've
asked you repeatedly to do ...

> Also, While there are less than 10 days for final evaluation, there
> are points that are not completed:
>
> * meson
> * cmake
> * documentation
>
> because of our focus a bit changed, didnt worked on them
> much. Should I complete them all? Is there a priority?

Please forget meson and cmake, this is not important at this stage.
What I now ask is to create a new branch, with *all* of your changes
recreated as logical and (relatively small) incremental commits,
rebased to 'master'.  Ideally every commit is compilable.  If not
(which should be an exception, and there should be a good explanation
for that), please add a remark in the commit message.

* Try to adjust the formatting to be as near to the remaining code of
  FreeType.

* The commit messages should also be in FreeType style, which is much*
  *more verbose than what you currently do.

* Avoid trailing whitespace – whatever editor you use, *please* change
  the settings so that this gets automatically removed.  Right now, I
  see zillions of trailing whitespace in file `tohtml.py`.

* Hin-Tak is right: Documentation is of paramount importance so that
  you (or someone else) can continue the work.

Have a look at previous GSoC students' (remote) branches to see how
such a recreated branch should look like, for example
`GSoC-2019-nikhil` or `GSoC-2017-ewaldhew`.


    Werner
valgrind.tar.gz (application/octet-stream, 2.6 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.