I've worked in Flash for a decade. My experience with it has gone from dabbling with it in high school to experimenting with it in college to doing serious AS development in professional design work. I've come to a certain level of familiarity with and acceptance of its shortcomings, while trying to hone my sense of where it is and isn't appropriate to use.
And alas, it feels like that "is" part gets just a tiny bit smaller every day. For all its quirks and annoyances, Flash is a great environment and it opened the door to really rich web experiences long before the W3C ever imagined them. It still has a lot of advantages today, but the W3C is quickly catching up, and I get a definite sense that Adobe is losing the focus that Macromedia once had. They're continuing to develop Flash as if today were just a futuristic version of 2003. But Flash isn't going to stay relevant in a vacuum.
One of these days, someone (maybe even Apple) is going to come out of nowhere with a beautiful, visual HTML5 Canvas + JS authoring suite and Adobe is going to realize just what they've been taking for granted. And by then it may be too late.
Strangely, ClickToFlash makes Flash crash more on my Mac. Whenever I click on it the browsers stalls for two or three seconds, my hard drive goes crazy and then it might work. Or crash.
Since crashing Flash has become relatively painless in recent times (just reload the browser) I still leave ClickToFlash on, but it's a strange behavior nonetheless.
Before there were dozens of decent ad-blocking extensions out there I was a big user of Privoxy. It had an action called "deanimate-gif" that would display only the first frame of the animated image.
I'm not sure if Privoxy was downloading the whole image in the background in order to extract the first frame, and I don't know if deanimation used less CPU or RAM than just displaying the animated versions, but I loved the feature regardless.
I don't know if it's just me but when I open a new tab in the background in Safari 4.0.4, the Flash doesn't load, it only loads when I activate this tab. Which is a great thing, I don't some awful audio coming from the flash.
I don't feel the need of ClickToFlash on Safari.
The problem I have with ClickToFlah or Flashblock is that you can't see the first frame of a flash video.
I think it's one reason browsing the web can be so much better on the iPhone (try ESPN on the iPhone vs the desktop as an example). I hope the tablet doesn't support flash either and forces web sites to provide non flash versions of their sites.
Silverlight is even more unstable for me in Safari, and Flash is fine for me in non-Safari browsers. I don't know if this is everyone's experience, but on my part I'm more inclined to blame Apple and Safari than Adobe.
On the slowness front, maybe Flash is slower on Mac, but it's hard for me to fault Adobe on this either (even as a Mac user). If I had finite resources, I too would allocate more of those to the majority platform.
Silverlight is a breeze in Safari for me. It doesn't eat all of my CPU and the fans keep it down. When I watch a flash movie however on my Mac the fans kick in and it sounds like it's gonna take off or something.
Click2Flash let's me load the m4v equivalent on youtube but that's unfortunately only for youtube.
I've noticed that either using Snow Leopard or using the "Play fullscreen in QuickTime" option cause better framerates. I think it has to do with support for the <video> tag.
I just did a very unscientific test, playing the same video in both Safari and Firefox. In both cases Flash used approximately 50% CPU. For comparison, playing a higher resolution video in Quicktime yielded about 15% CPU.
Flash is much less efficient than other video formats on all platforms, not just OS X. My netbook (when it's running XP) can handle most 720p video well enough, but has trouble with flash videos that take up less than half of that area.
Precisely. QuickTime on Macs can use hardware-based video decompression. If Apple allowed browser plugins to move video-decompression out of the CPU too, then that would be great.
I think that you are using this as a convenient cop out. For two reasons.
First, hardware (i.e. GPU) acceleration makes a significant difference only when decoding h.264. For h.263 and On2 V6 you shouldn't need hardware acceleration. GPU accelerated h.264 came in Quicktime X in Snow Leopard and is not available on all Snow Leopard compatible machines. The disparity in performance between Quicktime, and other player-codec packages for that matter, and Flash has been around for years.
The second, and more important in my opinion, reason is that Flash doesn't have performance and stability issues only when it comes to video. They are more apparent with video, but all kinds of content - games, sites, even sometimes ads - make the Flash plugin disproportionately task the system.
Your first point doesn't make sense, considering jd said "if Apple allowed browser plugins to move video-decompression out of the CPU too, then that would be great." Flash can't use hardware acceleration until Apple adds support for it to their video drivers. Sure, it took adobe a long time to get to this point, but video online is still young compared to the lifetime of the Flash Plugin, so your argument that the plugin has been around "for years" also doesn't make much sense.
I also don't agree with your second point, considering the things you are complaining about "games, sites, ads" are generally created with Flash because the advertiser (or ad agency) wants to do something that HTML can't do. It's their choice to do it, so don't blame their poor choices (and often poor coding) on the technology.
Consider that in general games and rich interactive things take more CPU than static HTML and graphics, so of course it will take more CPU to render those things. If you don't like it, don't play Flash games and boycott sites that use excessive poorly coded Flash.
> Consider that in general games and rich interactive things take more CPU than static HTML and graphics, so of course it will take more CPU to render those things. If you don't like it, don't play Flash games and boycott sites that use excessive poorly coded Flash.
There are Javascript/CSS demos out there that are much more dynamic/interactive than the average Flash based ad that still use less CPU.
In a similar vein, there are other Safari plugins out there that do much more than the average Flash based ad that use less CPU.
The Flash plugin uses more resources than people expect it to based on their experience with Flash in Windows, as well as their experience with other technologies on Safari/OS X. I don't think it is a collective hallucination.
> There are Javascript/CSS demos out there that are much more dynamic/interactive than the average Flash based ad that still use less CPU.
I don't agree with this in general, but let's say that I did: Of course native things will run faster than a sandboxed plugin. Unfortunately Flash still does WAY more than browsers do.
> In a similar vein, there are other Safari plugins out there that do much more than the average Flash based ad that use less CPU.
Oh, like what? Some specialized thing that does one thing only? Comparing other plugins to eachother won't work unless you are comparing the same code vs. each other. Actually, it would be nice to compare flash vs. silverlight in a pure performance test using "real life" situations like video and motion graphics.
> The Flash plugin uses more resources than people expect it to based on their experience with Flash in Windows, as well as their experience with other technologies on Safari/OS X. I don't think it is a collective hallucination.
So now we are back to Mac vs. Windows, and it's been covered enough in this thread that OS X is more limiting than windows when it comes to browser plugins, and it sounds to me like it's up to Apple to fix it, or for some other browser maker to come along and do it better, so we'll have to wait and see.
"As the numbers will show, Flash performs far better in Vista versus Mac OS X running on the same hardware, and it actually improved slightly with the version 10 update."
(OS X + Safari + Flash 9 Plugin = CPU hog)
(OS X + Safari + Flash 10 Plugin = slightly less of a CPU hog)
(Windows + Firefox + Flash 10 Plugin = CPU friendly)
I think that part we can agree on. It's unfortunate Ars didn't report on (Windows + Safari + Flash 10) or (OS X + Firefox + Flash 10) since those would have been a nice data points. I'll also admit this article is a bit dated but the point is that here is an example where Adobe tweaked some code and claimed a 3x increase in speed. Users were complaining all that time and some people were blaming the Plugin API. A performance problem can have multiple contributors.
My point is that you would think Adobe would push on it with all of their talent since it's in their best interest to optimize. I think though, that it's only computer geeks who realize it's caused by a plugin (for whatever reason) and the general public just thinks "my computer is slow".
I still have never seen a good analysis/description of what is flawed in the Safari plugin API.
In the end, I just don't think there's enough published data to settle this.
They can, but then they have to hand the result back to the browser to render, which can be slow.
Check out the new stuff coming in flash player 10.1, which will have some hardware acceleration, BUT not on OS X because it requires updated video drivers. Since Apple controls the video drivers on OS X, we just have to wait for them to update them (and since they don't seem to like Flash much, it could be a while).
Well, VLC et al seem to be able to decode and play videos without a problem, and one would think that the remaining 85% of CPU would be enough to copy the decoded image data into a buffer for the browser... But I haven't tried to do it myself, maybe it's harder than it seems.
I often see this claim made on the Net, and it is always quickly followed by someone saying that it's a load of rubbish, and that there is nothing stopping Adobe from doing harware acceleration in Safari plugins for the Mac.
So, this being Hacker News, is there someone out there with some experience writing Safari plugins that can give us a definitive answer to this question (preferably with a brief description of the APIs involved).
I don't think I can stand reading yet another thread on this topic which is filled with what appear to be poorly-researched assertions...
Sorry, I haven't heard of any progress on this yet... here's the best current guidance I've seen:
<em>"In Flash Player 10.1, H.264 hardware acceleration is not supported under either Linux or Mac OS X. Linux currently lacks a developed standard API that supports H.264 hardware video decoding, and Mac OS X does not expose access to the required APIs. The Flash Player team will continue to evaluate adding hardware acceleration to Linux and Mac OS X in future releases."</em>
http://www.adobe.com/devnet/flashplayer/articles/fplayer10.1...
Anybody who thinks that sounds bad should try running Flash on a PowerPC. It can't play standard size Youtube videos at an acceptable framerate on a G5, while it provides acceptable performance on an Atom-powered netbook running Windows.
The situation on Linux is a little better, but performance and reliability are still poor. Developers should keep this in mind when choosing to use Flash as a cross-platform environment.
Too bad the original post doesn't accept comments.
Yes, Mac performance can be an extra challenge -- think of discussions in 3D, video-editing, or gaming communities. Things get more complicated when you're in a browser -- particularly on a Mac, you can see changing performance when changing browsers. Video will continue to further improve on PCs with hardware decompression, but on Macs Adobe is still hoping to persuade Apple to open those APIs to browser plugins. Adobe's own goal is to make things transparent across hardware/OS brands. And Adobe is interested in adding authoring-support for "HTML5":
http://blogs.adobe.com/jd/2009/06/adobe_on_html5.html
Is there a technical hurdle that has given Adobe performance problems on OS X? Or is it really just the relative market share leading to few development resources on Mac?
Look, let's not kid ourselves, the problem is not technical. I'm sorry, but this stuff isn't rocket science, and even if it was, this plugin has existed for over 20 years, so they should have figured it out by now. Just think to yourself how much better the browser has gotten in that time frame, and its roughly how much worse the plugin has gotten.
The reasons are clearly either politics or incompetence. Now, I'm not sure what those politics might be. I don't personally believe that its that Adobe is "angry" at Mac or something, but I for example know that they are absolutely paranoid about accepting changes to the core code (even obvious crasher fixes require a ton of approval and consideration).
It really is to their own detriment. Regardless of how big the Mac market may be (its too big now to ignore and getting bigger), its a very powerful market of people that matter: i.e. developers. If Adobe got their act together, they would wipe the floor with JS, HTML5, etc. I mean, they almost do now, its purely due to their inability that they haven't completely and absolutely taken over the web.
Of course, the same can be said of standards. Taking 10 years to have any sort of measurable change on the W3C side is equally unacceptable (and we still ended up with a video solution that guarantees Flash will dominate this field for the next 10 years). Its always funny to me when people talk about whether "standards" or "flash" is winning, because it seems like a race where both parties are running backwards.
Not sure what that is supposed to prove, some would argue that that is a sizable chunk (bigger than Windows 7 currently). But that's really besides the point since the argument was that the people that matter are running it.
When you want to deliver video or games on the web then it's flash, period. There is no alternative, consequently adobe doesn't need to care about a few crying developers.
As you pointed out this may partly change at some point in the future with the HTML video tag, but that happens independently of happy or unhappy developers.
Yes, we all know this is the case, this is not novel information and I will in fact take it a step further and say that its not just games but just about any media products on the web where Flash is the only answer. For example, it is completely unrealistic to make a YouTube or Vimeo or even ESPN.com without Flash today.
My point is that they could have more than just the pure media market if they got their act together. Its never a good place to be when the only reason people use your software is because theres nothing else, and not because they actually like it. Additionally, assuming that there will never be an alternative is just silly. When your developers are unhappy, they will switch once its possible. The fact that Google Docs and similar apps are being done in JS+HTML should be scary to Adobe, if it isn't then they are frankly not very intelligent. Google will define the web tomorrow, and you better believe the second they can realistically go Flashless they will.
Again, all these same arguments apply on the standards side as well, they have dropped the ball and missed the same opportunities again and again, which is why Flash is still in the running (again, both survive due to eachother's weaknesses rather than their own strengths).
If Flash absolutely sang on every computer, it would be a much more difficult argument to make to go the standards route. Not necessarily impossible mind you, but certainly much harder. If it worked well and exactly the same on every computer, then its a hard thing to beat.
Mostly tuning in again to express my amusement over the downvotes from the (certainly large number of) flash haters. :-)
As for your points, yes, I didn't mean to argue any of that. Just wanted to set straight that from a business angle Adobe doesn't need to care about that 6% rounding error at this point.
They're waging a platform war which is different to, say, the browser war. Their dominance is so overwhelming that developers have no choice but use them, no matter how much it sucks - adobe knows that very well. That may not have been the reason for their consequent neglect towards the minority platforms from day 1. But not spending more resources today on remedying that situation is most likely a conscious decision (mixed with a bit of incompetence).
They know that making said developers crazy happy at this point doesn't help them one bit against the coming open standards. When the HTML video tag arrives then flash will be pushed out of the video niche, no matter how good it is or how happy the developers are.
Consequently there's simply not much reason for them to spend resources on making the OSX or Linux plugin better. Their focus is on the mobile market now, which is a battle that they really need to win if they want to maintain any relevance in the future.
Adobe doesn't need to care about that 6% rounding error at this point
I don't have any hard statistics but my anecdotal experience is that the developers of new, "Web 2.0" applications are more like 60% using macs, not 6%.
I don't think Adobe have given any explanation. Neither have they given any sign that they are working on fixing the performance and stability issues. It seems to me that Adobe's position can be summed up like this - "That's not a priority for us. Learn to live with it." As an example of this there is this mini-flamewar between John C. Welch and Adobe's John Dowdell: http://www.bynkii.com/archives/2009/06/doing_it_wrong.html
I would really, really love to know the answer to this too.
It's hard to describe my surprise that my 5-year-old PC, with a low power 1.6Ghz CPU, can easily breach 100fps while playing JamLegend, and my 9-month old, dual-core 2.66Ghz MacBook Pro can barely squeak out 40fps.
Speaking of framerate in Flash, setting the framerate on a particular SWF does not actually make the SWF run at that framerate, even if the client machine can run at that framerate. Rather, the framerate seems to be more a measure of CPU resources dedicated to running the SWF.
For example, back to JamLegend: My MBP can run JamLegend at 40fps, but not if the framerate is set to 40fps. If it's set to 40fps, I'll get 20. It it's set to 60fps, I'll get 30. In order to get 40fps, the framerate has to be set to 100. Meanwhile, on my old XP machine, setting it to 40 gets 40, 60->60, and 100->100.
So, very good question, why is it that Flash performance is so different on OS X than Windows?
True on the framerate -- it's an upper gate. Static video which overburdens a configuration can drop frames to keep up. But interactive presentations need to display each intended frame, and so will drop framerate instead. More here:
http://www.kaourantin.net/2006/05/frame-rates-in-flash-playe...
For the "why", that's Adobe Corp's tale to tell, but I haven't yet met a person inside Adobe who wouldn't be very, very happy if Mac/Win performance differences could be made to disappear.
That's a great link, I had not seen that article before. Though, in practice,the actual framerate to vary from the specified by much more than the -10 / +5 fps that he lists.
His final sentences might be relevant to this topic:
On high CPU load we might actually cut [the max framerate] into half, e.g. 30 frames/sec. OS X already does this in certain conditions.
Wish he had expanded on that a little more. Any idea what conditions cause OS X to halve the framerate?
I'd guess any plausible explanation would also have to account for the fact that basically every Adobe product on the Mac has gotten much worse over time with the exception of Lightroom.
See this blog post, and the comments that follow for the comments of hardcore Adobe users:
It's probably both. Couldn't find the source, but I remember it having to do with the OS X driver API and how it doesn't let you do the same kind of low-level voodoo that makes Flash work on Windows. And with limited resources, Adobe probably hacked something together that ran "Hello world!" and shipped it.
I'd like to hear an Adobe engineer's point of view.
Apple doesn't have a public API for Adobe to hook into to allow for hardware acceleration. As far as I know, there's nothing Adobe can do to remedy that situation.
Adobe wants to bring better video performance to the Mac, but Apple is not supporting them.
So you are suggesting the Flash plugin starts up an instance of windows so it can utilize the hardware acceleration?
The issue here (with the 10.1 hardware acceleration) is that it requires updated video drivers, and Apple controls those drivers on OS X, and Apple hates Flash. Maybe they will eventually add support, but why would they hurry if they don't like it in the first place?
He is suggesting that if there is no public API for Flash to use then there isn't one for Parallels to use either, yet Parallels manages a better job running Flash in IE on Windows all virtualised than Flash manages on it's own.
Parallels does not have updated video drivers from Apple, why should flash need them to match what parallels does now? Whatever Parallels installs or does to handle dismay updates, Flash plugin could do.
This is exactly what happens when you allow one proprietary plugin to become dominant. I have no doubt that that it's not in Adobe's best financial interests to devote more resources to the OSX Flash plugin. It's a small subset of the market. Most users are just going to suffer with what they have. Adobe loses nothing by offering a subpar experience on OSX at this point. I understand it's not realistic to simply say "don't use Flash, ever" because open standards aren't entirely interchangeable with the wide range of Flash apps out there. That being said we should certainly be trying to minimize the amount of Flash used on the Internet. As an avid user of Click2Flash I find it's quite easy to avoid Flash the majority of the time.
Try Flash on Ubuntu. Things like VDPau are open source and can be leveraged for GPU acceleration, yet it's still not there. Besides video and games, I have zero clue what it's useful for. Shitty band websites?
Adobe is really hurting themselves here. If most of the use of Flash on the web is video, content creators now have raw Theora or H264 in <video> as stable alternatives, with Flash becoming an IE-only fallback mode.
This might seem a little polemic - and it is - but I have been wishing Flash a quick death for years now. I simply hate it. No justification of existence for uncaring companies like that in the web of the year 2010. We don't need Flash!
And alas, it feels like that "is" part gets just a tiny bit smaller every day. For all its quirks and annoyances, Flash is a great environment and it opened the door to really rich web experiences long before the W3C ever imagined them. It still has a lot of advantages today, but the W3C is quickly catching up, and I get a definite sense that Adobe is losing the focus that Macromedia once had. They're continuing to develop Flash as if today were just a futuristic version of 2003. But Flash isn't going to stay relevant in a vacuum.
One of these days, someone (maybe even Apple) is going to come out of nowhere with a beautiful, visual HTML5 Canvas + JS authoring suite and Adobe is going to realize just what they've been taking for granted. And by then it may be too late.