Petit mais costaud !

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7320
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Petit mais costaud !

Message par falsam »

Quelqu'un pourrait il tester non pas la procédure mais le poids de l’exécutable de cette procédure ?

Code : Tout sélectionner

;
; Is numeric
Procedure.b IsNumeric(Expression.s)
  Protected *RegMatch, Value.b
  
  *RegMatch = CreateRegularExpression(#PB_Any ,"^[-]?\d*[.,]?\d*$")
  Value = MatchRegularExpression (*RegMatch, Expression)
  FreeRegularExpression (*RegMatch)
  
  ProcedureReturn Value
EndProcedure
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
coxco
Messages : 92
Inscription : ven. 06/juin/2008 16:04

Re: Petit mais costaud !

Message par coxco »

Salut

L'executable fait 68,0 Ko (69 632 octets) avec PB 4.60 !

C'est ça que tu voulais ?
Dernière modification par coxco le dim. 06/oct./2013 18:45, modifié 1 fois.
Purebasic 4.60 - W7 Ed.Fam.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Petit mais costaud !

Message par nico »

171 Ko avec Window 7 64 bits compiler avec PB 5.20 x64
Avatar de l’utilisateur
falsam
Messages : 7320
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Petit mais costaud !

Message par falsam »

nico a écrit :171 Ko avec Window 7 64 bits compiler avec PB 5.20 x64
J'arrive aussi à ce résultat sous Windows 7 64 Bits PB 5.20 (x86). C'est ce qui m'a étonné !
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7320
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Petit mais costaud !

Message par falsam »

coxco a écrit :L'executable fait 68,0 Ko (69 632 octets)
Avec les version précédentes de Pure basic (4.51) ce même code fait effectivement cette taille là. Je ne comprends pas pourquoi cette simple portion de code fait maintenant 171 ko.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
coxco
Messages : 92
Inscription : ven. 06/juin/2008 16:04

Re: Petit mais costaud !

Message par coxco »

Faut voir avec M.FRED :D
Purebasic 4.60 - W7 Ed.Fam.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Petit mais costaud !

Message par Ar-S »

161 ko sous W8 x64 compilé en PB 5.20 x86
Rien de coché dans les options de compilation.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
coxco
Messages : 92
Inscription : ven. 06/juin/2008 16:04

Re: Petit mais costaud !

Message par coxco »

J'ai essayé avec PB 5.00 X64 il fait 92,0 Ko (94 208 octets) :)

et avec PB 5.00 X32 88,0 Ko (90 112 octets)
Purebasic 4.60 - W7 Ed.Fam.
Fred
Site Admin
Messages : 2805
Inscription : mer. 21/janv./2004 11:03

Re: Petit mais costaud !

Message par Fred »

La lib des regexp integrée (PCRE) dans les nouvelles versions est plus complète (support UCP pour l'unicode), donc plus large.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Petit mais costaud !

Message par nico »

Oui mais faut prendre en compte l'évolution de la librairie PCRE, il y a une grosse différence par exemple entre la 8.31 et la 8.33
Avatar de l’utilisateur
falsam
Messages : 7320
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Petit mais costaud !

Message par falsam »

Merci Fred pour cette information. :)

En tout cas ça me rassure. Un petit utilitaire (1200 lignes environ) que je code actuellement avait doublé sa taille d'exe en ajoutant juste cette procédure et je pensais avoir choper une saloperie jusqu'à que je comprenne que cette procédure en était la cause.

Merci à vous tous pour ces réponses rapides :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7320
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Petit mais costaud !

Message par falsam »

Ma procédure IsNumeric() fait environ 170 Ko soit pratiquement la moitié du poids d'un utilitaire que je suis en train de finaliser. Si quelqu'un a mieux, je suis preneur. Merciiiiii :)

PS : Si je fais trop une fixation sur ce poids, n'hésitez pas à me le dire aussi :mrgreen:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Micoute
Messages : 2583
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Petit mais costaud !

Message par Micoute »

Bonsoir falsam, je ne sais pas si ça peut t'aider, mais j'ai ça !

ProcedureDLL.b IsNumericAscStr(Caractere.l)
; déterminer si la valeur du caractère ASCII donné est un nombre [0-9]
If (Caractere >= 48) And (Caractere <= 57)
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure

ProcedureDLL.b IsNumericStr(Caractere.s)
; déterminer si le premier caractère de la chaîne est un nombre [0-9]
Protected Resultat.b

Resultat = #True
If Len(Caractere) > 0
Resultat = IsNumericAscStr(Asc(Mid(Caractere, 1)))
EndIf

ProcedureReturn Resultat
EndProcedure

ProcedureDLL.b IsAlphaNumericStr(Caractere.s)
; détermine si le premier caractère de la chaîne est un caractère alphanumérique [A-Z a-z 0-9]
Protected Resultat.b

Resultat = #False
If Len(Caractere) > 0
Resultat = IsAlphaNumericAscStr(Asc(Mid(Caractere, 1, 1)))
EndIf

ProcedureReturn Resultat
EndProcedure
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Petit mais costaud !

Message par Backup »

nettement plus court :

Code : Tout sélectionner

Procedure IsNumeric(str$)
	; Dr Dri ...
	Protected *c.Byte
	*c = @str$
	If *c\b = #NULL
		ProcedureReturn #FALSE
	EndIf
	While *c\b <> #NULL
		If *c\b < '0' Or *c\b > '9'
			ProcedureReturn #FALSE
		EndIf
		*c + 1
	Wend
	ProcedureReturn #TRUE
EndProcedure


debug IsNumeric("azafdf")
debug IsNumeric("a654")
debug IsNumeric("458")

; EPB
Avatar de l’utilisateur
falsam
Messages : 7320
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Petit mais costaud !

Message par falsam »

Merci Micoute et Dobro. Dobro je prends ton code qui est plus court et bien plus léger dans l'éxécutable :) Merci encore
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre