Página 2 de 2

Re: MinGw X Borland

Enviado: 10 Mar 2010 08:58
por Itamar M. Lins Jr.
O que a tdragon disponibiliza.
http://www.tdragon.net/recentgcc/

Saudações,
Itamar M. Lins jr.

Re: MinGw X Borland

Enviado: 10 Mar 2010 13:45
por Itamar M. Lins Jr.
Resposta para uma pessoa que ainda usa o BCC

Código: Selecionar todos

It works but it's not very good choice.
There are some very serious bugs in BCC but for the ones known for us
we have workarounds, i.e. we do not use any floating point BCC low level
functions like _fpclass[l]() because they break 'double' number
calculations reducing the precision to 'float' level or we use
DLMALLOC as default memory manager because the one in BCC can cause
memory corruption in some situations.
But more important is the fact that BCC was not extended in last years
and now in comparison to other modern C compilers it does not have many
important features and optimization methods.
In contrast nearly each new GCC version has some important extensions
which improve optimization code and performance of final applications,
i.e. GCC 4.4 generates nearly twice faster code then 2.9x. (see results
below).

Harbour core code is written in a way which should help in optimization
process for compilers using some advanced optimization methods like
automatic autoinlining or automatic detecting of restricted areas due
to constant declarations or strict aliasing rules. It even does not have
such simple optimization methods like using assembler inline code for
commonly used CTRL functions like memset(), memcmp(), memmove(),
str*(), etc.
The results can be visible in the speed of final binaries.
You can use harbour/tests/speedtst.prg to compare the speed of Harbour
compiled with different C compilers.
You can also use it with other xbase/clipper compatible languages like
xHarbour, Clipper, CLIP, FlagShip, xBase++.

Below I'm attaching results for current Harbour SVN code. I cannot make
any tests with MSVC because I cannot use it with WINE. The speedtst.prg
code does not make any IO operations which may effect execution speed
so WINE and DOSEMU can execute final binaries naively without any time
consuming interrupts which may the results.
I used "official" MinGW with GCC 3.4.5 which gives slower code then GCC4.4.
I also do not have the newest PelleC 6.0.

GCC4.5 was used with -flto which enable link time optimization (LTO).
As you can see GCC4.4 in C++ mode and GCC4.5 gives the fastest code
and old PelleC compiler used by xHarbour.com (XCC) gives the slowest
code.
I haven't installed yet C++ compiler for GCC4.5 which potentially should
give the fastest code.
Please note that all OpenWatcom builds were created with disable IPO
optimization in HVM code. Due to compilation time we disabled HB_HVM_ALL=yes
optimization which improve the performance of final OW binaries.

Here are sorted the results.

Harbour 2.1.0dev (Rev. 14060) GNU C 4.5 (64-bit) x86-64
   [ total application time: ]....................................14.66

Harbour 2.1.0dev (Rev. 14060) GNU C++ 4.4 (64-bit) x86-64
   [ total application time: ]....................................14.65

Harbour 2.1.0dev (Rev. 14060) GNU C 4.4 (64-bit) x86-64
   [ total application time: ]....................................14.95

Harbour 2.1.0dev (Rev. 14060) Intel(R) (ICC) C 11.0 (64-bit) x86-64
   [ total application time: ]....................................16.22

Harbour 2.1.0dev (Rev. 14060) Open64 C 4.2.1 (64-bit) x86-64
   [ total application time: ]....................................16.29

Harbour 2.1.0dev (Rev. 14060) LLVM/Clang C 4.2.1 (64-bit) x86-64
   [ total application time: ]....................................17.57

Harbour 2.1.0dev (Rev. 14060) GNU C 4.4 (32-bit) x86
   [ total application time: ]....................................18.13

Harbour 2.1.0dev (Rev. 14060) Sun C (ident 0x5100) (64-bit) x86-64
   [ total application time: ]....................................18.21

Harbour 2.1.0dev (Rev. 14060) MinGW GNU C 3.4.5 (32-bit) x86
   [ total application time: ]....................................19.09

Harbour 2.1.0dev (Rev. 14060) Delorie GNU C 4.3.2 (DJGPP 2.04) (32-bit) x86
   [ total application time: ]....................................23.18

Harbour 2.1.0dev (Rev. 14060) Open Watcom C 12.80 (32-bit) x86 (LINUX)
   [ total application time: ]....................................23.54

Harbour 2.1.0dev (Rev. 14060) Open Watcom C++ 12.80.8 (32-bit) x86 (WIN)
   [ total application time: ]....................................25.65

Harbour 2.1.0dev (Rev. 14060) Open Watcom C 12.80 (32-bit) x86 (DOS)
   [ total application time: ]....................................25.76

Harbour 2.1.0dev (Rev. 14060) Borland C++ 5.5 (32-bit) x86
   [ total application time: ]....................................27.48

Harbour 2.1.0dev (Rev. 14060) GNU C 2.96 (32-bit) x86
   [ total application time: ]....................................29.39

Harbour 2.1.0dev (Rev. 14060) Pelles ISO C Compiler 4.50 (32-bit) x86
   [ total application time: ]....................................30.83

Harbour 2.1.0dev (Rev. 14060) Pelles ISO C Compiler 2.70 (32-bit) x86 (XCC)
   [ total application time: ]....................................34.70


For comparison I'm attaching result for some other compatible compilers.
xHarbour was compiled from current CVS with some small improvements and
fixes.

xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6691) GNU C 4.4 (64 bit) ?
   [ total application time: ]....................................32.42

xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6691) MinGW GNU C 3.4.5 (32 bit) ?
   [ total application time: ]....................................33.78

xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6691) Borland C++ 5.5 (32 bit) ?
   [ total application time: ]....................................44.02

FlagShip 4.48.2460 (1024 users) ?
   [ total application time: ]....................................80.04

best regards,
Przemek
Saudações,
Itamar M. Lins Jr.

MinGw X Borland

Enviado: 03 Out 2022 09:46
por carlaoonline
Bom dia!

Ressuscitando esse tópico:

A princípio, parece que se referia ao Bcc5.5 e usando o Bcc5.8 não notei os detalhes citados (ou pelo menos não fez diferença negativa nos resultados comparados com MinGW nos meus códigos)


Nesse cenário, considerando que o Bcc5.8 é muito mais rápido que a MinGW7.3 (no caso dos testes com array chegou a ser 400% mais rápido), linka mais rápido e a MinGW gera arquivos executáveis cerca de 50% maiores, por exemplo um executável com Bcc5.8 e fica com 756Kb, já com MinGW7.3 fica 1.144Kb (já com UPX), utilizo auto updated pelo cliente e eventualmente o executável vai pela internet pelo LetoDbf, então quanto menor mais rápido a transferência.

Tanto em console quanto em modo Gráfico, ambos usam LetoDbf, exportam para PDF, para Excel, usam GTWvg, (em console tenho uma rotina em MT), além de outras funcionalidades padrões e funcionam "perfeitamente" para o meu código.

Nesse sentido, para quem utiliza apenas em Windows, existe alguma vantagem de usar MinGw7.3 ao invés de Bcc5.8?
Ainda existem as falhas citadas no Bcc5.8? Caso positivo, existe um PRG teste que demonstre isso na prática?

Grato.

MinGw X Borland

Enviado: 03 Out 2022 10:39
por Itamar M. Lins Jr.
Olá!

Tem algumas coisas por conta da idade BCC5.8 é de 2005, no entanto o maior problema seria o uso do OpenSSL e de alguma outra LIB que o BCC não é compatível. Talvez o BCC 10.x tenha esses recursos.
Quanto mais tempo ficamos sem atualizar o compilador, maior a probabilidade de ficarmos sozinhos em uma ilha.
Veja a dificuldade para alguns usuários do xHb em migrar para o Harbour.

Saudações,
Itamar M. Lins Jr.

MinGw X Borland

Enviado: 03 Out 2022 11:09
por Itamar M. Lins Jr.
Olá!
Eu mesmo estou usando a mais nova versão do GCC 12X com o HB32. Era o GCC 10X atualizei.
https://www.msys2.org/
Pq faço isso ? Pq tem atualizações no OpenSSL uso TIPMAIL para enviar email por exemplo, ou posso testar a HBQT. BCC não compila a HBQT.

Saudações,
Itamar M. Lins Jr.

MinGw X Borland

Enviado: 03 Out 2022 12:48
por JoséQuintas
carlaoonline escreveu:Nesse sentido, para quem utiliza apenas em Windows, existe alguma vantagem de usar MinGw7.3 ao invés de Bcc5.8?
Ainda existem as falhas citadas no Bcc5.8? Caso positivo, existe um PRG teste que demonstre isso na prática?
O BCC era grátis, depois virou comercial e isso afastou seu uso.

Versões novas de compiladores C fazem mais checagens nos fontes, pra evitar problemas conhecidos.

Na verdade MINGW é GCC, e GCC tem pra muitos sistemas operacionais.
MINGW é o nome que deram pra distribuição de GCC contendo recursos pra Windows.

Acho que na prática é assim:
Tem muita coisa pronta, que com MINGW já vém pronto, com BCC alguém precisa fazer.
E o que existe pra BCC está ficando desatualizado.
Até LIBs comerciais copiam fonte do Harbour, pra complementar XHarbour e BCC.
Enquanto existir alguém que faça isso, ou enquanto o que existe for compatível, vai dar pra usar.
Mas vai chegar uma hora que isso vai acabar, porque não faz sentido ficar criando/dando manutenção no que já existe pronto.

Uma coisa é o desenvolver de Harbour usando BCC.
Outra coisa é ter desenvolvedor de BCC pra ajudar nos fontes do Harbour, quando algum problema aparece.
Na dúvida, mingw que todos usam, independente de qual sistema operacional usam.

Com mingw, se usar -strip vai reduzir um pouco mais o tamanho do EXE, independente se compactar depois.
Parece que isso remove informação de DEBUG pra linguagem C, coisa que não usamos.

MinGw X Borland

Enviado: 03 Out 2022 19:31
por JoséQuintas
gcc.png
Não sei se alguém acompanha isso.
Notei esse detalhe, de UCRT ao invés de MSVCRT.

A Microsoft e os desenvolvedores em geral já vém abandonando o que se refere a Windows anterior a Windows 10.
Acho que é mais um motivo pra se ir em frente, e não ficar parado no BCC de antigamente.

As coisas vém mudando muito rápido, e vai ficar cada vez mais difícil dos desenvolvedores ficarem mantendo versões compatíveis com tudo.
No MariaDB, ao abandonarem versões de Windows anteriores a Windows 10, o download reduziu de 100MB pra 50MB.

O Windows 11 obriga a trocar de computador, e ninguém reclamou.
E Windows 10 foi a última versão com opção em 32 bits, isso não existe pra Windows 11.
Esse pode ser só o ponto de partida pra muito mais mudanças.
Tudo pode acontecer daqui pra frente, talvez mudanças sem fim.

Tem o CLANG, um intermedíario de linguagem C, que dá uma padronizada, e talvez deixe os compiladores mais compatíveis.
Mas cai no que já mencionei: se vai ser tudo igual, pra que fazer diferente ? pra que manter várias versões ?