-
-
Notifications
You must be signed in to change notification settings - Fork 854
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WebP - Improve performance #1786
Comments
Would some sponsoring help for this task? I would really like to see webp support. |
Sponsorship is always welcome but it’s really a matter of resources which can be provided by the community if willing. In the interim you can download preview builds from our MyGet feed. |
I am using imagesharp in a server environment. I am afraid to use it in production currently as it has the potential to bring the CPU down. I will see if I find the time (and knowledge) to help, but I guess you are much more familiar with this low level code than must other developers. I don't know whether you work as a freelancer or employee but I guess if you would have the chance to work on this for 1-2 weeks the results would be amazing. |
Our MyGet build is exactly the same as our NuGet ones we just don't tag them. Things are subject to change but do go through 30,000+ unit tests. We've still got #1730 to complete before we can consider shipping V2 I'm afraid so we cannot ship a stable build until then.
Everyone contributing to Six Labors is doing so in their spare time - There's not been enough financial support from the software industry for me to be able to work full time on the projects (hopefully one day). I personally attempt to get some work done most nights between 11pm and 2am. |
Yes, I assumed that it works like this, therefore I asked if I can support the team financially by sponsoring this task, at least partially. |
Getting some donation for doing the work here would be very welcome. I think most people really underestimate how much work it really is.
I am not sure that we can achieve that much in that short time period to be honest. I am currently working on reducing the allocations. I have an experimental branch, I think the first step for improving the performance should be, that someone does As James mentioned, hardware intrinsics are the way to go for performance gains. |
Hi. Nice work! Do you have plans to support webp animations? |
The goal is to support all features of webp, so yes, but animations is not high on my priority list at the moment. Performance improvements are more important now. I will create a tracking issue with the missing features. |
Sorry for that closing and reopening again, same issue as before: just wanted to link an PR to this issue. |
@brianpopow Rather than manually linking (which always closes when PRs are merged into the default branch) you can just use the hash syntax without closing keywords. |
I have re-run the benchmarks again for the commit: 853c40c from 23. October, which was the commit merging webp into master. Encode:
Decode:
The biggest deviation to the original benchmarks from this thread is lossy encoding. The good news is though, I made good progress in improving that (see the open PR and there is more potential there). |
I wanted to share some updates on the improvements for webp. Encode:
Decode:
Notable mentions:
Notes:
|
Is that already available in the latest package? If so, I somehow get the UnknownImageFormatException and WEBP is still not listed there. Perhaps I'm doing something wrong but I'm not able to load a WEBP image just yet. |
You need to use the MyGet feed. We’ll be shipping it to NuGet with 2.0 |
Some update in the current status. Encode:
Decode:
Notable mentions:
|
Is this general issue still valuable? = meaning shall we roll it to "Future", or close it? |
Since I do not see any big opportunities anymore to improve the performance further, I would vote for closing the issue. |
Yeah let's close it for now. |
Now that WebP has been merged #1552 into master we need to polish the performance to bring it up to speed for the release of V2.
We're looking for community contribution here while we focus on bring the Drawing/Fonts libraries up to RC status and also work on the new Unamanaged Memory allocator #1730 so anyone who like to make things go fast please have a crack.
Benchmarks
The last benchmarks (June 2021) indicate that we're a good bit slower than the Magick.NET implementation. (There's a positive here, potentially lots of low hanging fruit)
Decode
Big improvements in .NET Core with some SIMD which is positive. Definitely some allocations to deal with but will require profiling to determine if something else is in play.
Encode
The current implementation suffers from heavy allocations but I suspect a lot of that is low hanging fruit which we can refactor to use our
MemoryAllocator
types. The lack of difference between NET 472 and NET 5 suggests we have some SIMD opportunities also.The text was updated successfully, but these errors were encountered: