Jump to content

programação alternativa Basic com assembler


Guest Zangado

Recommended Posts

Guest Zangado
27 minutos atrás, DixieJoe disse:

ai tem mais de 1 ano de estudos, com certeza.

Valeu.

de onde vc tirou esse 1 ano de estudo?

 em 1 dia eu consegui  enteder bastante coisa do asm, 

nem é tão complicado , e nem é para vc fazer programas inteiros em asm é apenas para um pouco de codigo mais critico como as contagens de bits e loops para filtros 

Link to comment
Share on other sites

  • 1 month later...
  • 3 months later...
Guest Zangado

Eu estou animado com o O2 

tem bastante coisas dificeis, mas a forma da sintaxe é parecido ao vba e isso facilita,  mas infelizmente tbm tem pontos de extrema complexidade

 

esse loop tela mais de 1 minuto no vba

algo como 640,000,000 de interações em cima de 1 array, se colocar mais não completa ou trava a macro

no O2 com 64,000,000,000 de interações leva menos de 30 segundos 

Sub teste()

Dim AN(-2 To 5, 3 To 10) As Long

 Dim Ln As Long, L1 As Long, L2 As Long, C1 As Long, C2 As Long, N As Long
L1 = LBound(AN, 1)
L2 = UBound(AN, 1)
C1 = LBound(AN, 2)
C2 = UBound(AN, 2)

For Ln = 1 To 10000000 '00
     For L = L1 To L2
          For C = C1 To C2
               AN(L, C) = N
               N = N + 1
          Next
     Next
Next
MsgBox "pronto"

End Sub

 

Link to comment
Share on other sites

Guest Zangado
10 minutos atrás, DixieJoe disse:

Não entendo o que você está fazendo.

Com certeza, no Delphi, vai ser mais lento do que isso.

foi apenas um teste de performance para ver se eu não estou perdendo o meu tempo 

afinal se leva um tempo considerável para aprender, depois mais um bom tempo para se programar oque  se quer

para então esperar muito tempo para rodar é de doer

 

mas ou menos qual o tempo de processamento no delphi dessas 64.000.000.000  de interações?

Link to comment
Share on other sites

edcronos2,

 

Fiz um teste para 64 bilhões conforme acima (veja que o valor que você tem está: 10000000 ´00  ---- mas eu deixei 1000000000)

 

50 segundos no Delphi, na versão que uso.

 

 

Acho que pode ser otimizado. Não pensei em como fazer uma otimização.

Link to comment
Share on other sites

Guest Zangado
13 minutos atrás, DixieJoe disse:

(veja que o valor que você tem está: 10000000 ´00 

essa macro de cima é do vba excel

esse foi o valor que tive que usar no vba para testar , com mais  ficava sem responder

 

14 minutos atrás, DixieJoe disse:

50 segundos no Delphi, na versão que uso.

até que nem foi muito diferente não,  

não é teste de otimização, é de execução mesmo, 

mas matrizes no O2 são primitivas, dá um trabalho danado montar,  

mas pelo que vi ao contrario do Delphi tem a vantagem que não precisa do ponto e virgula a cada fim de  linha, isso de ponto e virgula e os { } me deixavam perturbado quando estava tentando aprender C

Link to comment
Share on other sites

Guest Zangado

@DixieJoe

eu estou querendo montar algumas coisas como DLL , tipo processamento pesado , talvez até tudo e somente use o excel como interface visual e guardar dados 

loteria não é algo exato ,

então tem que se fazer muitos testes para chegar a alguma conclusão 

e se 1 teste demora como se vai ter paciência de esperar 10, 1000 ou mesmo 10000 para variação de valores?

eu tive uma planilha que foi super otimizada, mas levava 9 minutos para gerar a tabela de trabalho, nem tem como mexer num treco desse 

essa planilha de ajuste estatístico por exemplo para procurar ajustes automaticamente pode levar varios minutos , e se o ajuste não ficou bom se tentar  novamente desanima,  isso na loto facil, imagina como seria na loto mania

Link to comment
Share on other sites

2 horas atrás, DixieJoe disse:

edcronos2,

 

Fiz um teste para 64 bilhões conforme acima (veja que o valor que você tem está: 10000000 ´00  ---- mas eu deixei 1000000000)

 

50 segundos no Delphi, na versão que uso.

 

 

Acho que pode ser otimizado. Não pensei em como fazer uma otimização.

esse tempo de 50 segundos é com 64 bilhões ou 1000000000

Link to comment
Share on other sites

@edcronos2 

 

edcronos2,

 

só para ver se entendi;

 

você falou que o Delphi não usa ´ponto e virgula´

 

SIM, usa, no final de cada linha de comando. 

Exemplo do programa que usei na minha procedure chamada. Você só predefine as variáveis e o array no inicio da procedure.

 

      L1 := -2;
      L2 := 5;
      C1 := 3;
      C2 := 10;
      N  := 0;
      For Ln := 1 To 1000000000 do
        begin
          For L := L1 To L2 do
            begin
              For C := C1 To C2 do
                begin
                  AN[L, C ] := N;
                  inc( N );
                end;
            end;
        end;

    end;

    Label277.Caption := 'Pronto';

Link to comment
Share on other sites

Guest Zangado
2 horas atrás, DixieJoe disse:

você falou que o Delphi não usa ´ponto e virgula´

o O2 que não usa, é basic mesmo

dá para usa   { } 

acho isso de ponto e virgula uma coisa de maluco em programação 

teria que ser algo verificado pelo compilador , imagina vc escrevendo uma ideia que está na cabeça tendo que se preocupar onde colocar o ponto e virgula

já os  {  }  para mim é algo dificil de lidar 

eu uso muito muito loop e if´s aninhados ,

e no meio daquele monte de }}}} em cascata vc tem que colocar um outro if

no C para conseguir montar algo eu tinha que  ficar colocando } 'end if, } 'next ...,

porque mesmo o ide sinalizando qual é o da outra ponta , visualmente é dificil de definir com exatidão o ponto correto , mas é algo mais de limitação pessoal

 

para mim as sintaxes de programação tem mais a ver com a capacidade que se tinha em se escrever um tradutor para codigo do que com o contexto em si , e esse begin no delphi ?

o o2  aceita escrever apenas com  { }, sem os next, os end if do basic

 

o  O2 teria tudo para ter uma aceitação no mercado,

mas infelizmente é feito por um homem só, e ainda tem limitações difíceis de definir intuitivamente 

 

acho que meu tempo foi menor pq o meu é um i3 mas com 3.0 ghz 4gb memoria

 

 

 

 

Link to comment
Share on other sites

edcronos2,

 

 

O begin... end do Pascal foi mantido no Delphi. Você acaba se acostumando e até ajuda a organizar o código e a procurar erros.

 

O ponto e vírgula é uma regra que cada linha de programação deve terminar com o sinal  ;

 

Acho tranquilo de usar, depois de um tempo pequeno de treino.

Link to comment
Share on other sites

Guest Zangado
1 minuto atrás, DixieJoe disse:

O begin... end do Pascal foi mantido no Delphi. Você acaba se acostumando e até ajuda a organizar o código e a procurar erros.

foi mantida para manter as característica da linguagem, como é que ajuda?

 

o ponto e virgula falo que foi uma limitação mantida, me diz por que o compilador não pode verificar a sintaxe e saber onde o codigo termina? quantas vezes vc não teve que verificar onde estava faltando o ;  que não deixava rodar?

 

claro que se acostuma, mas acho que traz uma sobrecarga desnecessária no programador, isso é mantido até hoje por motivos de compatibilidade, imagino que em programação quem mais sabe é quem dita as regras, e quem já se acostumou com a rotina dos ; não vai querer que mudem assim do nada 

Link to comment
Share on other sites

Guest Zangado
8 horas atrás, DixieJoe disse:

Se você esquecer, o compilador avisa como erro de sintaxe e mostra onde.

KKK dá para mim não

Link to comment
Share on other sites

10 minutos atrás, edcronos2 disse:

KKK dá para mim não

porque não tenta em powerbasic é praticamente igual do vb e é bem rapido.olha aquele codigo que vc postou e da para usar asm inline.

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN () AS LONG

 

DIM AN(-2 TO 5, 3 TO 10) AS LONG
DIM Ln AS LONG, L1 AS LONG, L2 AS LONG, C1 AS LONG, C2 AS LONG, N AS LONG
DIM l AS LONG,c AS LONG
DIM secs1 AS SINGLE
DIM secs2 AS SINGLE
DIM st AS INTEGER
secs1 = TIMER
st = TIMER

L1 = LBOUND(AN, 1)
L2 = UBOUND(AN, 1)
C1 = LBOUND(AN, 2)
C2 = UBOUND(AN, 2)

FOR Ln = 1 TO  1000000000

     FOR L = L1 TO L2
          FOR C = C1 TO C2
               AN(L, C) = N
               N = N + 1
          NEXT
     NEXT
NEXT

secs2 = TIMER


MSGBOX "pronto" & " " & FORMAT$(secs2 - secs1)

END FUNCTION

Link to comment
Share on other sites

Guest Zangado
33 minutos atrás, Bruno Cintra disse:

porque não tenta em powerbasic

eu até tenho a versão 9 que estava gratuita enquanto seu desenvolvedor ainda estava vivo

agora que foi vendido não está mais gratuito

eu praticamente estou brincando de programador 

 

em falar nisso qual o tempo leva no pb ?

 

Link to comment
Share on other sites

Em 13/06/2018 at 21:56, DixieJoe disse:

edcronos2,

 

Fiz um teste para 64 bilhões conforme acima (veja que o valor que você tem está: 10000000 ´00  ---- mas eu deixei 1000000000)

 

50 segundos no Delphi, na versão que uso.

 

 

Acho que pode ser otimizado. Não pensei em como fazer uma otimização.

se quiser eu tenho a versão 10 e o editor form versão 2,mais o form versão 2 tem que dar uma procurada no instalador aqui.

levou 5 minutos com todos aquele 0 e com 2 zeros a menos 3 segundos

for testado note 1,80 ghz 4 gb 64bits

Link to comment
Share on other sites

Guest Zangado
1 hora atrás, Bruno Cintra disse:

se quiser eu tenho a versão 10 e o editor form versão 2,mais o form versão 2 tem que dar uma procurada no instalador aqui.

levou 5 minutos com todos aquele 0 e com 2 zeros a menos 3 segundos

for testado note 1,80 ghz 4 gb 64bits

precisa não, eu só vou usar o O2  para processamento pesado 

e ele compila em 64 bits, imagina as possibilidades 

e eu reparei que por causa do multithreading o que leva a usar apenas 25% do processador que tem 2 nucleos fisicos e cada nucleo é dividido em 2 thread logicos , tenho que desativar esse treco

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...