Signal+|Insanely optimized script signal

a difference of microseconds has no effect
being the same speed as anything else is not a selling point (your only selling point)
not saying this is useless but you cant just say “mine is wayyyy better” with such a miniscule difference that is doesnt matter

2 Likes

“difference” means it has an effect. I’m assuming what you mean is that the effect is so small, that it doesn’t really matter.

I never said “mine is wayyyy better”. You’re quoting things that was never said.
People asked for a benhcmark, I provided one, and the results were that mine was faster (over 2x faster in some areas, which while in microseconds, is a big difference percent-wise).

The fact is that mine is faster. Better is a different thing, but since mine has (i think) the same features, and also has full typing and custom types, you could argue that it’s “better”.

I advertise it as fast and optimized, because it is.

Please stop replying to these people, there is literally no point in arguing with them, they are not going to change and they are not criticizing your work in good faith either.

Like this is the type of replies they bring up in a serious argument.
image

I am starting to believe this guy is trolling too, Don’t waste your time.

5 Likes

I am going to try this module out soon. Cannot wait.

Will report back with what I think :smiley:

2 Likes

Its okay, but good job on making it though.

edit: after the recent version 2.7 I would say its pretty good. Nice resource.

1 Like

cool, i made this ultimate benchmark to LemonSignal on --!optimize 2 mode in Studio using Benchmarker.
LemonSignal known better than GoodSignal & FastSignal.

:Fire

1e3 iterations with 1 argument & 10 connections.

1e4 iterations with 1 argument & 10 connections.

:Connect

1e3 iterations.

1e4 iterations.

:Once

1e3 iterations.

1e4 iterations.

:Disconnect

1e3 :Connect’s, immediate :Disconnect.

1e4 :Connect’s, immediate :Disconnect.

:DisconnectAll

1e3 :Connect’s & :DisconnectAll for once.

1e4 :Connect’s & :DisconnectAll for once.

:Destroy

1e3 :Connect’s & :Destroy for once.

1e4 :Connect’s & :Destroy for once.

Download benchmark .rbxl file

3 Likes

Very cool, I will definitely use it.

1 Like

:package: Version 2.7.0

:wastebasket: Removed features:

  • Removed .Connected property, improving speed.

:hammer_and_wrench: Changes & fixes:

  • Removed --!native because I found out it decreases speed in this case.
  • Heavily simplified linked list logic, improving speed.
  • Swapped number-keys out for string-keys, as to avoid mixed-tables, improving speed and readability.
  • No longer stores the connection metatable, improving speed.
  • Now unlinks metatable instead of overriding with a no-op function.
  • Now passes already-cached thread to reusableThreadCall, avoiding coroutine.running().
  • No longer uses thread immediately, because it’s actually slightly faster to resume once.
  • Fixed an error that would occur when a thread calling :Wait() is resumed before fire.
  • Comment changes and additions.
  • Changed class names to PascalCase.
  • Minor variable renamings.
2 Likes

How do you create such benchmark screens? Where you can compare and contrast functions and stuff?

He’s using a plugin by BoatBomber; Benchmarker.
It’s not free but it’s just $5.00 and you’ll have it forever.

2 Likes

This is hot :fire:

Cannot wait to download this version and give it a go!
Looking good so far, thanks for all you do :pray:

1 Like

:package: Version 2.8.0

:hammer_and_wrench: Changes & fixes:

  • New thread storage logic, improving fire speed by a lot.
  • Minor comment changes and additions.
1 Like

Vro forgor to give me credit :broken_heart:

No, it’s at the bottom of the topic post.

1 Like

Ahh alright my bad :heart: //30charlimit

Hi, i think there still an issue :frowning:
I just tested out 2.8.0 with the new thread storage, and it’s still suffering from slow fire times :frowning:

Could it be the bottleneck isn’t storage at all?

When optimizing SimpleSignal, I noticed usage of task.spawn outside of creating the thread at the start led to significantly slower fire times, could be a lead

It might be your benchmark then.
I’ll benchmark once BoatBomber fixes his Benchmarker plugin — yea after 7 major releases it’s still buggy. :frowning:

1 Like

Hi, changing task.spawn to coroutine.resume in :Fire() fixed the issue :slight_smile:

image

I don’t know why but it seems like the coroutine library is much faster at resuming/closing threads, atleast in this case

(Note that my way of benchmarking fluctuates wildly, benchmarker would be the best way to measure this)

(Also if you don’t mind can you make my credit in the post bigger :3 )

I do know that it’s faster, but I didn’t know the difference was this big.
The thing is, with coroutine.resume you don’t get proper error outputs.

1 Like

Since coroutine.resume() returns a boolean indicating success and a message (similar to pcall), you can just detect if that’s false and error manually :V