Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
I keep hearing that T4Fx is too slow and heavy, so yet again I remind people that there are ways to make it dance.

People want to use it out of the box, they take no time to optimize it and when it can't do what they expect from it they declare it too slow and heavy.

What is happening here is not that the app doesn't work, it's just that their expectations are skewed.

It's been a known fact that Youtube on PowerPC has been difficult to make work for years now - with any browser. The limitation here is mainly on the Mac and while outdated browsers contribute to this, getting around the Mac's hardware limitations is the actual issue.

Yet people expect TenFourFox to stream 1080p video from Youtube without issue and then blame the browser when that doesn't happen!

The other thing about expectations is speed. Firefox/TenFourFox on ANY system is not faster than Webkit or Chrome. Expecting T4Fx then to blow the doors off Safari on a PowerPC is ludicrous. Yet again, people then claim it's too slow and heavy.

It always has been slower, it always has been heavier. And even on modern Macs in comparison to WK and Chrome it is slower and heavier and as far as I can tell it always will be.

But again, there are things you can do. Even so, it will never be faster than these other browsers. But it will be faster than the out of the box profile people seem to expect will do the internet so wonderfully.

All of this goes back to a final expectation though. People seem to be so concerned about speed. Speed is nice, speed is fine, but as I have mentioned many times, I prefer the ability to customize and the ability to use as many modern things as I can on my Macs over speed. I am willing to sacrifice some speed for that.

It would seem that many people are not. Or perhaps their use cases differ from mine.

Tiger is a nice OS and as has been claimed it is probably best optimized for PowerPC. But I can't run Adobe CS4 on Tiger. The printer sharing features of Tiger are primitive in comparison to Leopard. Tiger has issues conncecting to Windows servers and PCs. It's capacity to use SMB is primitive and if the Finder drops a connection to an attached server the computer beachballs forever. Leopard will ask if you want to disconnect and will move right along.

So, again I sacrifice speed for customization and usability. I use Tiger because I have to on certain Macs. But Leopard for everything else, even if it's on a Mac that cannot install it natively.

Don't get me wrong. I am not berating anyone for their choices being different than mine. I'm just pointing out that because one may prefer this or that over the other it does not make the other option any less valid.
 
  • Like
Reactions: bobesch
I'm sure I've mentioned it before, but there is a fix for this issue- http://bafford.com/software/unlockupd/
Yes, you have and thank you for mentioning it again!

I wish I had known about this way back when. From 2006 to 2010 specifcally. Those were the major years I used 10.4 and this would have helped a lot.

But I only have one system now that uses 10.4 and that's my server (actually 10.4.11 Server). PCs connect to it and not the other way around. And all the rest of my Macs are running Leopard or Snow Leopard.
 
  • Like
Reactions: AphoticD
I keep hearing that T4Fx is too slow and heavy, so yet again I remind people that there are ways to make it dance.

People want to use it out of the box, they take no time to optimize it and when it can't do what they expect from it they declare it too slow and heavy.

What is happening here is not that the app doesn't work, it's just that their expectations are skewed.

It's been a known fact that Youtube on PowerPC has been difficult to make work for years now - with any browser. The limitation here is mainly on the Mac and while outdated browsers contribute to this, getting around the Mac's hardware limitations is the actual issue.

Yet people expect TenFourFox to stream 1080p video from Youtube without issue and then blame the browser when that doesn't happen!

The other thing about expectations is speed. Firefox/TenFourFox on ANY system is not faster than Webkit or Chrome. Expecting T4Fx then to blow the doors off Safari on a PowerPC is ludicrous. Yet again, people then claim it's too slow and heavy.

It always has been slower, it always has been heavier. And even on modern Macs in comparison to WK and Chrome it is slower and heavier and as far as I can tell it always will be.

But again, there are things you can do. Even so, it will never be faster than these other browsers. But it will be faster than the out of the box profile people seem to expect will do the internet so wonderfully.

All of this goes back to a final expectation though. People seem to be so concerned about speed. Speed is nice, speed is fine, but as I have mentioned many times, I prefer the ability to customize and the ability to use as many modern things as I can on my Macs over speed. I am willing to sacrifice some speed for that.

It would seem that many people are not. Or perhaps their use cases differ from mine.

Tiger is a nice OS and as has been claimed it is probably best optimized for PowerPC. But I can't run Adobe CS4 on Tiger. The printer sharing features of Tiger are primitive in comparison to Leopard. Tiger has issues conncecting to Windows servers and PCs. It's capacity to use SMB is primitive and if the Finder drops a connection to an attached server the computer beachballs forever. Leopard will ask if you want to disconnect and will move right along.

So, again I sacrifice speed for customization and usability. I use Tiger because I have to on certain Macs. But Leopard for everything else, even if it's on a Mac that cannot install it natively.

Don't get me wrong. I am not berating anyone for their choices being different than mine. I'm just pointing out that because one may prefer this or that over the other it does not make the other option any less valid.

Well, I bet that if someone were to write optimized codecs with Altivec assembly(which would be incredibly difficult), and write an Altivec optimized C library, run those on an Altivec optimized Linux kernel. Even Ivy Bridge/Sandy Bridge laptops would get their arses whipped. My laptop is a dual core Penryn C2D P8700, with Quadro FX 770M GPU, handles 1080p@30fps just fine. Admitedly, my laptop runs about 60 watts of power to play a 1080p video on one screen, while doing general web browsing with 6 tabs on another screen, a PMG5 Quad would be using 300 watts just for the CPU. And my laptop runs Javascript-laden modern sites just fine, but a G5 struggles, even though T4FX has a Altivec optimized Javascript engine(but I would imagine, running a Altivec optimized Javascript engine on LInux would be a bit faster.).
 
  • Like
Reactions: z970
Well, I bet that if someone were to write optimized codecs with Altivec assembly(which would be incredibly difficult), and write an Altivec optimized C library, run those on an Altivec optimized Linux kernel. Even Ivy Bridge/Sandy Bridge laptops would get their arses whipped.

What I've been preaching for years.
 
Well, I bet that if someone were to write optimized codecs with Altivec assembly(which would be incredibly difficult), and write an Altivec optimized C library, run those on an Altivec optimized Linux kernel. Even Ivy Bridge/Sandy Bridge laptops would get their arses whipped. My laptop is a dual core Penryn C2D P8700, with Quadro FX 770M GPU, handles 1080p@30fps just fine. Admitedly, my laptop runs about 60 watts of power to play a 1080p video on one screen, while doing general web browsing with 6 tabs on another screen, a PMG5 Quad would be using 300 watts just for the CPU. And my laptop runs Javascript-laden modern sites just fine, but a G5 struggles, even though T4FX has a Altivec optimized Javascript engine(but I would imagine, running a Altivec optimized Javascript engine on LInux would be a bit faster.).

i am not sure if this would be able to make it fast enough, even if done.

a year or so ago, i bought an iMac G5 for fun. I installed Lubuntu, a lightweight version of ubuntu, and played around with Altivec assembler. My chosen experiment was to look at the sha256 algorithm, which is a hash algorithm used by a lot of different systems, including 'integrity checkers' of download files, and bitcoin. I wanted to try this because someone had done Altivec assembler for sha256 for power8 powerpc machines that IBM is still shipping. https://golang.org/src/crypto/sha256/sha256block_ppc64le.s

The default sha256 program that ships with ubuntu is 'sha256sum'. I wrote a simple C version that mimicked this program, and got about the same speed. Then I tried to optimize it with altivec assembly. It was not enough to just rewrite C code in assembly, i had to break down the algorithm piece by piece in a notebook and figure out which assembler instructions would match up with it best and in what order. After about 80 hours of work, I was maybe within sight of getting twice the speed, but still with a lot of bugs to work out. Some people might say its just that i dont 'get it'.... ok. maybe.

The thing past-me didnt realize about altivec assembly optimization is that the vendors and development partners back in the day had extremely fancy software tools that could analyze the internal state of the CPU, simulate all the pipelines and so forth and so on, so that they would help you optimize your assembly code. That was how people really optimized altivec code back in the day. It is not just writing instructions to run calculations in parallel. It is about giving the CPU the altivec instructions in the most optimal order so that it will always be able to be working on something or fetching data into those 128 bit registers efficiently, and using the available parts of the CPU simultaneously in time for everything to come together. I think this is beyond difficult - i think it basically requires the high level analysis tools that are not available to joe schmoe linux hacker. Or tons of experience and/or savant-level insight into how altivec works.

More than that, what would the best theoretical speedup be? Lets say somehow you have algorithm X and you can apply altivec magic and speed it up. Well, altivec is SIMD with a 128 bit register. So maybe if your algorithm works on 32 bit values, you can get a 4 times speedup in the best case. Is four times speedup enough to deal with the modern web? If a site loads in 4 minutes, and you get it down to 1 minute, does that mean its usable? If your algorithm is dealing with 8 bits values you get 16 x speedup maybe? How many algorithms only depend on calculations on 8 bit values? And does that make a difference if your program is really i/o bound instead of CPU bound... what is the maximum bandwidth of the disk bus on a G5 machine? the network ? And the GPU?

I am not sure how much difference altivec optimization would make for the whole experience.

Here is the other thing. The heat. Everything i have read about the G5s, especially multi-cpu, is that they are space heaters. My own G5 sounds like an airplane taking off from time to time. Especially when altivec is operating at peak speed, using every last bit of CPU capability. The stories about why Apple switched to Intel often mention the power efficiency issue. But its not just the power waste, its that this will over time break the machine apart, repeated cycling of heating and cooling. That is what I have read about a lot of G5 towers. http://tenfourfox.blogspot.com/2014/04/long-life-computing-plus-quad-g5-cpu.html so the more AltiVEC is used, the hotter the machine runs, and the shorter its life of the machine.

Is it really worth optimizing linux for all that? Most enthusiasts are wanting to run OSX i imagine.
 
I am not sure how much difference altivec optimization would make for the whole experience.

Whilst I agree about Altivec firing on all cylinders causing a problem with 100% CPU, the example I would cite is Coreplayer - as it's highly optimised, it can play any given video file at around half the CPU of Quicktime..so that would be the goal, to say have a browser that isn't necessarily faster (but could be) but one that does more with less. That'd be a huge help to PPC portables.
 
Last edited:
The secret about getting web&video on PPC/old machines work seamless again is clever coding (like CorePlayer) and get rid of all that blown-up advertising/spying hidden crap coming with every current web-page.
It's a shame, how commercial interests, advertising, spying etc. take over the once free and open web.
 
Excellent write up @donbright thank you for sharing.

I think more than anything it comes down to the fact that coding a web browser is a massive undertaking for even a dedicated team of coders, let alone the solo tinkerer who is trying to contribute something back to a small community for free.

I imagine that for the most part, programmers with AltiVec optimization skills are going to be so few and far between it could almost be considered a lost art.

The only realistic entry point to AltiVec optimizations would be to contribute to an existing project like TenFourFox or Leopard WebKit and rewrite one little calculation / algorithm at a time until we see a tiny speed-up.

I’ve said it before, I believe the G4s will outlive the G5 hardware in terms of longevity, so there is certainly going to be a long term interest in AltiVec based platforms and a place for optimized code, but there is no money in it. It’s going to have to be a labour of love from anyone involved.
 
The thing past-me didnt realize about altivec assembly optimization is that the vendors and development partners back in the day had extremely fancy software tools that could analyze the internal state of the CPU, simulate all the pipelines and so forth and so on, so that they would help you optimize your assembly code. That was how people really optimized altivec code back in the day. It is not just writing instructions to run calculations in parallel. It is about giving the CPU the altivec instructions in the most optimal order so that it will always be able to be working on something or fetching data into those 128 bit registers efficiently, and using the available parts of the CPU simultaneously in time for everything to come together. I think this is beyond difficult - i think it basically requires the high level analysis tools that are not available to joe schmoe linux hacker. Or tons of experience and/or savant-level insight into how altivec works.
Given how a modern CPU works the days of hand optimizing through assembly language are long behind us. Compilers now do the heavy lifting that you described above.

Only in unique circumstance does hand assembly make sense.

More than that, what would the best theoretical speedup be? Lets say somehow you have algorithm X and you can apply altivec magic and speed it up. Well, altivec is SIMD with a 128 bit register. So maybe if your algorithm works on 32 bit values, you can get a 4 times speedup in the best case. Is four times speedup enough to deal with the modern web? If a site loads in 4 minutes, and you get it down to 1 minute, does that mean its usable? If your algorithm is dealing with 8 bits values you get 16 x speedup maybe? How many algorithms only depend on calculations on 8 bit values? And does that make a difference if your program is really i/o bound instead of CPU bound... what is the maximum bandwidth of the disk bus on a G5 machine? the network ? And the GPU?
A modern web page is a cesspool of hidden code which bogs down computers which are still capable of displaying the content of the page. The optimization for web browsing is to optimize the web pages themselves.
 
  • Like
Reactions: z970
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.