Post subject: x264 - x64 versus x86
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11479
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Stovent ran a few tests for me against #5504: Dashjump's GBA Sonic Advance 3 "100%" in 1:07:51.89. He used 2 new versions of my package: Raw is his plain x264 output. Only avs2pipe(mod) reports the total elapsed time, and it's not used in the x86 version, so I used another output, that only tells the fps. Aligned is where I tried to come up with a framecount that would result in a 1 hour of encoding time with the fps reported by x264, to make the difference clearer. Was too lazy to count percentages. Note that x64 build of x264 required piping, because there's no x64 build of avisynth 2.6+. If someone helps us move to an avisynth fork that supports x64, that'd be extremely helpful. If anyone wants to run the tests and tell us their result, be my guest! 10bit444 Raw
  • x86 - encoded 23795 frames, 6.39 fps, 832.13 kb/s
  • x64 - encoded 23795 frames, 6.98 fps, 832.13 kb/s
Aligned
  • x86 - 1:00:00.00
  • x64 -    54:55.70
512kb Raw
  • x86 - encoded 27000 frames, 10.46 fps, 716.97 kb/s
  • x64 - encoded 27000 frames, 11.89 fps, 716.95 kb/s
Aligned
  • x86 - 1:00:00.10
  • x64 -    52:47.12
HD Raw
  • x86 - encoded 27000 frames, 13.57 fps, 3690.54 kb/s
  • x64 - encoded 27000 frames, 12.98 fps, 3690.53 kb/s
Aligned
  • x86 - 1:00:00.00
  • x64 - 1:02:43.64
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Pokota
He/Him
Joined: 2/5/2014
Posts: 779
2.5.8 MT has an x64 build; there's also Avisynth+ but you'll need a custom build of ffmpeg to encode with that, as standard windows ffmpeg x64 isn't built with the right hook (I don't have standalone x264 so I'm not sure what's different there). Here's a link to the doom9 thread for Avisynth+, since that's probably more up-to-date than their own github page.
Adventures in Lua When did I get a vest?
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11479
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
We're not using ffmpeg. We encode with x264 directly.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Publisher
Joined: 4/23/2009
Posts: 1283
I 2nd Pokota's post on AVS+. It works fine as far as I know (Rolanmen1 has been using it a lot for his encodes). Only problem is getting 64-bit plugins as not all of them are recompiled to 64-bit.
Post subject: Re: x264 - x64 versus x86
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
feos wrote:
Note that x64 build of x264 required piping, because there's no x64 build of avisynth 2.6+. If someone helps us move to an avisynth fork that supports x64, that'd be extremely helpful.
Why would it be helpful? When I did encodes, the piping was an advantage, not a disadvantage. You get some multiprocess speedup, and it's more stable because avisynth, a notorious memory stomper, is not in the same process as anything else important. You can also flexibly upgrade builds of x264 without needing anything special in them.
Post subject: Re: x264 - x64 versus x86
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11479
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
natt wrote:
Why would it be helpful? When I did encodes, the piping was an advantage, not a disadvantage. You get some multiprocess speedup, and it's more stable because avisynth, a notorious memory stomper, is not in the same process as anything else important. You can also flexibly upgrade builds of x264 without needing anything special in them.
I dunno, I've read on doom9 that streaming from avisynth to an x64 x264 takes away some advantage the latter gives on x64. The current workflow is about 10% faster than x86, so I dunno how much better or worse it will get if we switch to x64 avisynth and drop (or keep) piping.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Post subject: Re: x264 - x64 versus x86
Pokota
He/Him
Joined: 2/5/2014
Posts: 779
natt wrote:
feos wrote:
Note that x64 build of x264 required piping, because there's no x64 build of avisynth 2.6+. If someone helps us move to an avisynth fork that supports x64, that'd be extremely helpful.
Why would it be helpful?
Because native compilation is better than having to run it through a compatibility layer. Even if we still end up piping (and having to recompile a heluva lot of plugins), having x64 avisynth will be better than x86 avisynth. This brings up an interesting point, though. Were all the tests done with piping, or just the x64 test? It'll be easier to compare if the only change is architecture.
Adventures in Lua When did I get a vest?
Post subject: Re: x264 - x64 versus x86
Editor, Emulator Coder, Site Developer
Joined: 5/11/2011
Posts: 1108
Location: Murka
Pokota wrote:
Because native compilation is better than having to run it through a compatibility layer. Even if we still end up piping (and having to recompile a heluva lot of plugins), having x64 avisynth will be better than x86 avisynth. This brings up an interesting point, though. Were all the tests done with piping, or just the x64 test? It'll be easier to compare if the only change is architecture.
What compatibility layer? All cpus with the x64 instruction set fully support the x86 instruction set at full speed. SysWOW64 might ding you a few cycles on syscalls, but that will hardly be noticable. Like with x264, there's a maybe 5-10% speed gain down the line due to x64 being a better instruction set. But that's it, and x264 does have a lot of hand tuned assembly to ensure that bonus that avisynth does not. There are a lot of good reasons to clean up (or replace!) avisynth, but don't be expecting speed gains at the end of the tunnel