[Gambas-user] My quest for efficiency

Fernando Cabral fernandojosecabral at ...626...
Sat Jul 15 19:36:28 CEST 2017


Well, after 5 hours the most efficient version is still running. Only 1/5
of the file has been processed. The less efficient version has only
processed 1 MB, or 1/ 42 of the file.

So I decided to write a C program to do the same task. Since I have not
been using C in the last 20 years, I did not try any fancy thing. I know C
has to be more efficient, so I expected to find find, perhaps, 10 minutes,
5 minutes. Not so. To my surprise, the program bellow did the whole thing
in ONE SECOND!

I found this to be quite inexpected.

















*#include <stdio.h>int main(void){    FILE *fp;    int c;    fp =
fopen("/home/fernando/temp/deah001.dhn", "r");    while((c = fgetc(fp)) !=
EOF) {            putchar(c + 11);        }    fclose(fp);    return 0;}*

I am sure there is a way to do this efficiently in Gambas.Certainly not in
1 second, as it happened here, but perhaps in 5 or 10 minutes instead of
the several hours it is now taking.

- fernando

2017-07-15 11:08 GMT-03:00 Fernando Cabral <fernandojosecabral at ...626...>:

> Hi
>
> I've found a file whose text has been obfuscated by subtracting 11 from
> every byte. Now I want to bring it back to regular text. To do this I have
> to add 11 to each byte read from that file. Now, I have tried several ways
> to do it, and they all seemed every inefficient to me. Two examples follow
>
>
>
>
>
>
>
>
>
>
>
> *j = 0For i = 0 To Len(RawText)str &= Chr(CByte(Asc(RawText, i) + 11))  '
> either this or the following'Mid(Rawtext, i, 1) = Chr(CByte(Asc(RawText, i)
> + 11))Inc jIf j = 100000 Then   Print i; Now   j = 0EndifNext*
>
> In the first option (uncommented) I am building a new string byte by byte.
> In the second option (commented) I am replacing each character in place.
> I expected the second option to be way faster, especially because there is
> no need for the string to be reallocated. Nevertheless, it showed to be a
> snail.
> The first option, in spite of the fact that it grows slower and slower as
> the string grows, is still way faster than the second option.
>
>
> To me it does not make sense. Does it for you?
> Also, is there a faster way to do this?
>
> --
> Fernando Cabral
> Blogue: http://fernandocabral.org
> Twitter: http://twitter.com/fjcabral
> e-mail: fernandojosecabral at ...626...
> Facebook: f at ...3654...
> Telegram: +55 (37) 99988-8868 <(37)%2099988-8868>
> Wickr ID: fernandocabral
> WhatsApp: +55 (37) 99988-8868 <(37)%2099988-8868>
> Skype:  fernandojosecabral
> Telefone fixo: +55 (37) 3521-2183 <(37)%203521-2183>
> Telefone celular: +55 (37) 99988-8868 <(37)%2099988-8868>
>
> Enquanto houver no mundo uma só pessoa sem casa ou sem alimentos,
> nenhum político ou cientista poderá se gabar de nada.
>
>


-- 
Fernando Cabral
Blogue: http://fernandocabral.org
Twitter: http://twitter.com/fjcabral
e-mail: fernandojosecabral at ...626...
Facebook: f at ...3654...
Telegram: +55 (37) 99988-8868
Wickr ID: fernandocabral
WhatsApp: +55 (37) 99988-8868
Skype:  fernandojosecabral
Telefone fixo: +55 (37) 3521-2183
Telefone celular: +55 (37) 99988-8868

Enquanto houver no mundo uma só pessoa sem casa ou sem alimentos,
nenhum político ou cientista poderá se gabar de nada.



More information about the User mailing list